Ensure cluster relation updated on config-changed
Some cluster relation settings are dependant on config so ensure that if confg changes, those changes are reflected on the cluster relation. Change-Id: I0bf8601bc7d3c769a59c4eafd89643811b46dbe6 Closes-Bug: 1641870
This commit is contained in:
parent
1cb38fec20
commit
f001baf944
|
@ -181,6 +181,9 @@ def config_changed():
|
|||
for r_id in relation_ids('identity-service'):
|
||||
keystone_joined(relid=r_id)
|
||||
|
||||
for r_id in relation_ids('cluster'):
|
||||
cluster_joined(relation_id=r_id)
|
||||
|
||||
for r_id in relation_ids('object-store'):
|
||||
object_store_joined(relation_id=r_id)
|
||||
try_initialize_swauth()
|
||||
|
@ -354,19 +357,20 @@ def object_store_joined(relation_id=None):
|
|||
|
||||
@hooks.hook('cluster-relation-joined')
|
||||
def cluster_joined(relation_id=None):
|
||||
settings = {}
|
||||
for addr_type in ADDRESS_TYPES:
|
||||
netaddr_cfg = 'os-{}-network'.format(addr_type)
|
||||
address = get_address_in_network(config(netaddr_cfg))
|
||||
if address:
|
||||
settings = {'{}-address'.format(addr_type): address}
|
||||
relation_set(relation_id=relation_id, relation_settings=settings)
|
||||
settings['{}-address'.format(addr_type)] = address
|
||||
|
||||
if config('prefer-ipv6'):
|
||||
private_addr = get_ipv6_addr(exc_list=[config('vip')])[0]
|
||||
relation_set(relation_id=relation_id,
|
||||
relation_settings={'private-address': private_addr})
|
||||
settings['private-address'] = private_addr
|
||||
else:
|
||||
private_addr = unit_get('private-address')
|
||||
settings['private-address'] = unit_get('private-address')
|
||||
|
||||
relation_set(relation_id=relation_id, relation_settings=settings)
|
||||
|
||||
|
||||
def is_all_peers_stopped(responses):
|
||||
|
|
|
@ -202,6 +202,37 @@ class SwiftHooksTestCase(unittest.TestCase):
|
|||
relation_id='storage:1', timestamp=1234)]
|
||||
mock_rel_set.assert_has_calls(calls)
|
||||
|
||||
@patch.object(swift_hooks, 'unit_get', lambda key: '10.0.0.100')
|
||||
@patch.object(swift_hooks, 'relation_set')
|
||||
@patch.object(swift_hooks, 'config')
|
||||
@patch.object(swift_hooks, 'get_address_in_network')
|
||||
def test_cluster_joined(self, mock_get_addr, mock_config,
|
||||
mock_relation_set):
|
||||
addrs = {'10.0.0.0/24': '10.0.0.1',
|
||||
'10.0.1.0/24': '10.0.1.1',
|
||||
'10.0.2.0/24': '10.0.2.1'}
|
||||
|
||||
def fake_get_address_in_network(network):
|
||||
return addrs.get(network)
|
||||
|
||||
config = {'os-public-network': '10.0.0.0/24',
|
||||
'os-admin-network': '10.0.1.0/24',
|
||||
'os-internal-network': '10.0.2.0/24'}
|
||||
|
||||
def fake_config(key):
|
||||
return config.get(key)
|
||||
|
||||
mock_get_addr.side_effect = fake_get_address_in_network
|
||||
mock_config.side_effect = fake_config
|
||||
|
||||
swift_hooks.cluster_joined()
|
||||
mock_relation_set.assert_has_calls(
|
||||
[call(relation_id=None,
|
||||
relation_settings={'private-address': '10.0.0.100',
|
||||
'admin-address': '10.0.1.1',
|
||||
'internal-address': '10.0.2.1',
|
||||
'public-address': '10.0.0.1'})])
|
||||
|
||||
@patch.object(swift_hooks, 'relation_set')
|
||||
@patch.object(swift_hooks, 'update_dns_ha_resource_params')
|
||||
@patch.object(swift_hooks, 'get_hacluster_config')
|
||||
|
|
Loading…
Reference in New Issue