431
432
def test_shared_db_context_with_data_and_access_net_mismatch(self):
432
433
'''Mismatch between hostname and hostname for access net - defers execution'''
433
relation = FakeRelation(relation_data=SHARED_DB_RELATION_ACCESS_NETWORK)
434
relation = FakeRelation(
435
relation_data=SHARED_DB_RELATION_ACCESS_NETWORK)
434
436
self.relation_get.side_effect = relation.get
435
437
self.get_address_in_network.return_value = '10.5.5.1'
436
438
self.config.side_effect = fake_config(SHARED_DB_CONFIG)
437
439
shared_db = context.SharedDBContext()
438
440
result = shared_db()
439
441
self.assertEquals(result, {})
440
self.relation_set.assert_called_with(relation_settings={'hostname': '10.5.5.1'})
442
self.relation_set.assert_called_with(
444
'hostname': '10.5.5.1'})
442
446
def test_shared_db_context_with_data_and_access_net_match(self):
443
447
'''Correctly set hostname for access net returns complete context'''
444
relation = FakeRelation(relation_data=SHARED_DB_RELATION_ACCESS_NETWORK)
448
relation = FakeRelation(
449
relation_data=SHARED_DB_RELATION_ACCESS_NETWORK)
445
450
self.relation_get.side_effect = relation.get
446
451
self.get_address_in_network.return_value = 'bar'
447
452
self.config.side_effect = fake_config(SHARED_DB_CONFIG)
954
959
self.relation_ids.side_effect = relation.relation_ids
955
960
self.relation_get.side_effect = relation.get
956
961
self.related_units.side_effect = relation.relation_units
957
self.get_address_in_network.return_value = 'cluster-peer0.localnet'
962
self.get_address_in_network.return_value = None
963
self.get_netmask_for_address.return_value = '255.255.0.0'
958
964
self.config.return_value = False
959
966
haproxy = context.HAProxyContext()
960
967
with patch_open() as (_open, _file):
961
968
result = haproxy()
964
'peer-0': 'cluster-peer0.localnet',
965
'peer-1': 'cluster-peer1.localnet',
966
'peer-2': 'cluster-peer2.localnet',
971
'cluster-peer0.localnet': {
972
'network': 'cluster-peer0.localnet/255.255.0.0',
974
'peer-0': 'cluster-peer0.localnet',
975
'peer-1': 'cluster-peer1.localnet',
976
'peer-2': 'cluster-peer2.localnet',
969
980
'local_host': '127.0.0.1',
970
981
'haproxy_host': '0.0.0.0',
971
982
'stat_port': ':8888',
1004
1018
with patch_open() as (_open, _file):
1005
1019
result = haproxy()
1008
'peer-0': 'cluster-peer0.localnet',
1009
'peer-1': 'cluster-peer1.localnet',
1010
'peer-2': 'cluster-peer2.localnet',
1022
'cluster-peer0.localnet': {
1023
'network': 'cluster-peer0.localnet/255.255.0.0',
1025
'peer-0': 'cluster-peer0.localnet',
1026
'peer-1': 'cluster-peer1.localnet',
1027
'peer-2': 'cluster-peer2.localnet',
1013
1031
'local_host': '127.0.0.1',
1032
'haproxy_host': '0.0.0.0',
1033
'stat_port': ':8888',
1034
'haproxy_client_timeout': 50000,
1014
1035
'haproxy_server_timeout': 50000,
1015
'haproxy_client_timeout': 50000,
1037
# the context gets generated.
1038
self.assertEquals(ex, result)
1039
# and /etc/default/haproxy is updated.
1040
self.assertEquals(_file.write.call_args_list,
1041
[call('ENABLED=1\n')])
1043
@patch('charmhelpers.contrib.openstack.context.unit_get')
1044
@patch('charmhelpers.contrib.openstack.context.local_unit')
1045
def test_haproxy_context_with_data_multinet(self, local_unit, unit_get):
1046
'''Test haproxy context with all relation data for network splits'''
1047
cluster_relation = {
1050
'private-address': 'cluster-peer1.localnet',
1051
'admin-address': 'cluster-peer1.admin',
1052
'internal-address': 'cluster-peer1.internal',
1053
'public-address': 'cluster-peer1.public',
1056
'private-address': 'cluster-peer2.localnet',
1057
'admin-address': 'cluster-peer2.admin',
1058
'internal-address': 'cluster-peer2.internal',
1059
'public-address': 'cluster-peer2.public',
1063
local_unit.return_value = 'peer/0'
1064
unit_get.return_value = 'cluster-peer0.localnet'
1065
relation = FakeRelation(cluster_relation)
1066
self.relation_ids.side_effect = relation.relation_ids
1067
self.relation_get.side_effect = relation.get
1068
self.related_units.side_effect = relation.relation_units
1069
self.get_address_in_network.side_effect = [
1070
'cluster-peer0.admin',
1071
'cluster-peer0.internal',
1072
'cluster-peer0.public'
1074
self.get_netmask_for_address.return_value = '255.255.0.0'
1075
self.config.return_value = False
1077
haproxy = context.HAProxyContext()
1078
with patch_open() as (_open, _file):
1082
'cluster-peer0.admin': {
1083
'network': 'cluster-peer0.admin/255.255.0.0',
1085
'peer-0': 'cluster-peer0.admin',
1086
'peer-1': 'cluster-peer1.admin',
1087
'peer-2': 'cluster-peer2.admin',
1090
'cluster-peer0.internal': {
1091
'network': 'cluster-peer0.internal/255.255.0.0',
1093
'peer-0': 'cluster-peer0.internal',
1094
'peer-1': 'cluster-peer1.internal',
1095
'peer-2': 'cluster-peer2.internal',
1098
'cluster-peer0.public': {
1099
'network': 'cluster-peer0.public/255.255.0.0',
1101
'peer-0': 'cluster-peer0.public',
1102
'peer-1': 'cluster-peer1.public',
1103
'peer-2': 'cluster-peer2.public',
1107
'local_host': '127.0.0.1',
1016
1108
'haproxy_host': '0.0.0.0',
1017
1109
'stat_port': ':8888',
1042
unit_get.return_value = 'peer/0'
1133
local_unit.return_value = 'peer/0'
1043
1134
relation = FakeRelation(cluster_relation)
1044
1135
self.relation_ids.side_effect = relation.relation_ids
1045
1136
self.relation_get.side_effect = relation.get
1046
1137
self.related_units.side_effect = relation.relation_units
1047
self.get_address_in_network.return_value = 'cluster-peer0.localnet'
1048
self.get_ipv6_addr.return_value = 'ip6-localhost'
1138
self.get_address_in_network.return_value = None
1139
self.get_netmask_for_address.return_value = \
1140
'FFFF:FFFF:FFFF:FFFF:0000:0000:0000:0000'
1141
self.get_ipv6_addr.return_value = ['cluster-peer0.localnet']
1049
1142
c = fake_config(HAPROXY_CONFIG)
1050
1143
c.data['prefer-ipv6'] = True
1051
1144
self.config.side_effect = c
1052
1146
haproxy = context.HAProxyContext()
1054
1147
with patch_open() as (_open, _file):
1055
1148
result = haproxy()
1058
'peer-0': 'cluster-peer0.localnet',
1059
'peer-1': 'cluster-peer1.localnet',
1060
'peer-2': 'cluster-peer2.localnet',
1151
'cluster-peer0.localnet': {
1152
'network': 'cluster-peer0.localnet/'
1153
'FFFF:FFFF:FFFF:FFFF:0000:0000:0000:0000',
1155
'peer-0': 'cluster-peer0.localnet',
1156
'peer-1': 'cluster-peer1.localnet',
1157
'peer-2': 'cluster-peer2.localnet',
1063
1161
'local_host': 'ip6-localhost',
1064
1162
'haproxy_server_timeout': 50000,
1065
1163
'haproxy_client_timeout': 50000,