sync /next
This commit is contained in:
@@ -13,6 +13,9 @@ utils.register_configs = MagicMock()
|
||||
utils.restart_map = MagicMock()
|
||||
|
||||
import neutron_api_hooks as hooks
|
||||
hooks.hooks._config_save = False
|
||||
|
||||
hooks.hooks._config_save = False
|
||||
|
||||
utils.register_configs = _reg
|
||||
utils.restart_map = _map
|
||||
@@ -30,10 +33,11 @@ TO_PATCH = [
|
||||
'determine_ports',
|
||||
'do_openstack_upgrade',
|
||||
'execd_preinstall',
|
||||
'is_leader',
|
||||
'filter_installed_packages',
|
||||
'get_l2population',
|
||||
'get_overlay_network_type',
|
||||
'is_relation_made',
|
||||
'log',
|
||||
'neutron_plugin_attribute',
|
||||
'open_port',
|
||||
'openstack_upgrade_available',
|
||||
'relation_get',
|
||||
@@ -42,6 +46,8 @@ TO_PATCH = [
|
||||
'unit_get',
|
||||
'get_iface_for_address',
|
||||
'get_netmask_for_address',
|
||||
'get_address_in_network',
|
||||
'update_nrpe_config',
|
||||
]
|
||||
NEUTRON_CONF_DIR = "/etc/neutron"
|
||||
|
||||
@@ -93,13 +99,16 @@ class NeutronAPIHooksTests(CharmTestCase):
|
||||
self.patch('neutron_plugin_api_relation_joined')
|
||||
_amqp_rel_joined = self.patch('amqp_joined')
|
||||
_id_rel_joined = self.patch('identity_joined')
|
||||
_id_cluster_joined = self.patch('cluster_joined')
|
||||
self._call_hook('config-changed')
|
||||
self.assertTrue(_n_api_rel_joined.called)
|
||||
self.assertTrue(_n_plugin_api_rel_joined.called)
|
||||
self.assertTrue(_amqp_rel_joined.called)
|
||||
self.assertTrue(_id_rel_joined.called)
|
||||
self.assertTrue(_id_cluster_joined.called)
|
||||
self.assertTrue(self.CONFIGS.write_all.called)
|
||||
self.assertTrue(self.do_openstack_upgrade.called)
|
||||
self.assertTrue(self.apt_install.called)
|
||||
|
||||
def test_amqp_joined(self):
|
||||
self._call_hook('amqp-relation-joined')
|
||||
@@ -253,15 +262,25 @@ class NeutronAPIHooksTests(CharmTestCase):
|
||||
)
|
||||
|
||||
def test_neutron_api_relation_changed(self):
|
||||
self.CONFIGS.complete_contexts.return_value = ['shared-db']
|
||||
self._call_hook('neutron-api-relation-changed')
|
||||
self.assertTrue(self.CONFIGS.write.called_with(NEUTRON_CONF))
|
||||
|
||||
def test_neutron_plugin_api_relation_joined(self):
|
||||
def test_neutron_api_relation_changed_incomplere_ctxt(self):
|
||||
self.CONFIGS.complete_contexts.return_value = []
|
||||
self._call_hook('neutron-api-relation-changed')
|
||||
self.assertTrue(self.CONFIGS.write.called_with(NEUTRON_CONF))
|
||||
|
||||
def test_neutron_plugin_api_relation_joined_nol2(self):
|
||||
self.unit_get.return_value = '172.18.18.18'
|
||||
_relation_data = {
|
||||
'neutron-security-groups': False,
|
||||
'addr': '172.18.18.18'
|
||||
'l2-population': False,
|
||||
'overlay-network-type': 'vxlan',
|
||||
}
|
||||
self.get_l2population.return_value = False
|
||||
self.get_overlay_network_type.return_value = 'vxlan'
|
||||
self._call_hook('neutron-plugin-api-relation-joined')
|
||||
self.relation_set.assert_called_with(
|
||||
relation_id=None,
|
||||
@@ -305,11 +324,78 @@ class NeutronAPIHooksTests(CharmTestCase):
|
||||
**_relation_data
|
||||
)
|
||||
|
||||
@patch.object(hooks, 'get_hacluster_config')
|
||||
def test_ha_joined_no_bound_ip(self, _get_ha_config):
|
||||
_ha_config = {
|
||||
'vip': '10.0.0.1',
|
||||
'ha-bindiface': 'eth1',
|
||||
'ha-mcastport': '5405',
|
||||
}
|
||||
vip_params = 'params ip="10.0.0.1" cidr_netmask="21" nic="eth120"'
|
||||
_get_ha_config.return_value = _ha_config
|
||||
self.test_config.set('vip_iface', 'eth120')
|
||||
self.test_config.set('vip_cidr', '21')
|
||||
self.get_iface_for_address.return_value = None
|
||||
self.get_netmask_for_address.return_value = None
|
||||
_relation_data = {
|
||||
'init_services': {'res_neutron_haproxy': 'haproxy'},
|
||||
'corosync_bindiface': _ha_config['ha-bindiface'],
|
||||
'corosync_mcastport': _ha_config['ha-mcastport'],
|
||||
'resources': {
|
||||
'res_neutron_eth120_vip': 'ocf:heartbeat:IPaddr2',
|
||||
'res_neutron_haproxy': 'lsb:haproxy'
|
||||
},
|
||||
'resource_params': {
|
||||
'res_neutron_eth120_vip': vip_params,
|
||||
'res_neutron_haproxy': 'op monitor interval="5s"'
|
||||
},
|
||||
'clones': {'cl_nova_haproxy': 'res_neutron_haproxy'}
|
||||
}
|
||||
self._call_hook('ha-relation-joined')
|
||||
self.relation_set.assert_called_with(
|
||||
**_relation_data
|
||||
)
|
||||
|
||||
@patch.object(hooks, 'get_hacluster_config')
|
||||
def test_ha_joined_with_ipv6(self, _get_ha_config):
|
||||
self.test_config.set('prefer-ipv6', 'True')
|
||||
_ha_config = {
|
||||
'vip': '2001:db8:1::1',
|
||||
'vip_cidr': '64',
|
||||
'vip_iface': 'eth0',
|
||||
'ha-bindiface': 'eth1',
|
||||
'ha-mcastport': '5405',
|
||||
}
|
||||
vip_params = 'params ipv6addr="%s" ' \
|
||||
'cidr_netmask="ffff.ffff.ffff.ffff" ' \
|
||||
'nic="%s"' % \
|
||||
(_ha_config['vip'], _ha_config['vip_iface'])
|
||||
_get_ha_config.return_value = _ha_config
|
||||
self.get_iface_for_address.return_value = 'eth0'
|
||||
self.get_netmask_for_address.return_value = 'ffff.ffff.ffff.ffff'
|
||||
_relation_data = {
|
||||
'init_services': {'res_neutron_haproxy': 'haproxy'},
|
||||
'corosync_bindiface': _ha_config['ha-bindiface'],
|
||||
'corosync_mcastport': _ha_config['ha-mcastport'],
|
||||
'resources': {
|
||||
'res_neutron_eth0_vip': 'ocf:heartbeat:IPv6addr',
|
||||
'res_neutron_haproxy': 'lsb:haproxy'
|
||||
},
|
||||
'resource_params': {
|
||||
'res_neutron_eth0_vip': vip_params,
|
||||
'res_neutron_haproxy': 'op monitor interval="5s"'
|
||||
},
|
||||
'clones': {'cl_nova_haproxy': 'res_neutron_haproxy'}
|
||||
}
|
||||
self._call_hook('ha-relation-joined')
|
||||
self.relation_set.assert_called_with(
|
||||
**_relation_data
|
||||
)
|
||||
|
||||
def test_ha_changed(self):
|
||||
self.test_relation.set({
|
||||
'clustered': 'true',
|
||||
})
|
||||
self.is_leader.return_value = True
|
||||
self.relation_ids.side_effect = self._fake_relids
|
||||
_n_api_rel_joined = self.patch('neutron_api_relation_joined')
|
||||
_id_rel_joined = self.patch('identity_joined')
|
||||
@@ -317,23 +403,10 @@ class NeutronAPIHooksTests(CharmTestCase):
|
||||
self.assertTrue(_n_api_rel_joined.called)
|
||||
self.assertTrue(_id_rel_joined.called)
|
||||
|
||||
def test_ha_changed_not_leader(self):
|
||||
self.test_relation.set({
|
||||
'clustered': 'true',
|
||||
})
|
||||
self.is_leader.return_value = False
|
||||
self.relation_ids.side_effect = self._fake_relids
|
||||
_n_api_rel_joined = self.patch('neutron_api_relation_joined')
|
||||
_id_rel_joined = self.patch('identity_joined')
|
||||
self._call_hook('ha-relation-changed')
|
||||
self.assertFalse(_n_api_rel_joined.called)
|
||||
self.assertFalse(_id_rel_joined.called)
|
||||
|
||||
def test_ha_changed_not_clustered(self):
|
||||
self.test_relation.set({
|
||||
'clustered': None,
|
||||
})
|
||||
self.is_leader.return_value = False
|
||||
self.relation_ids.side_effect = self._fake_relids
|
||||
_n_api_rel_joined = self.patch('neutron_api_relation_joined')
|
||||
_id_rel_joined = self.patch('identity_joined')
|
||||
|
||||
Reference in New Issue
Block a user