57
59
self.relation_get.side_effect = self.test_relation.get
58
60
self.test_config.set('openstack-origin', 'distro')
59
61
self.test_config.set('neutron-plugin', 'ovs')
60
# self.test_config.set('neutron-external-network', 'ext_net')
61
# self.lsb_release.return_value = {'DISTRIB_CODENAME': 'trusty'}
62
# self.charm_dir.return_value = '/var/lib/juju/charms/neutron/charm'
64
63
def _fake_relids(self, rel_name):
65
return [ randrange(100) for _count in range(2) ]
64
return [randrange(100) for _count in range(2)]
67
66
def _call_hook(self, hookname):
68
67
hooks.hooks.execute([
71
70
def test_install_hook(self):
72
71
_pkgs = ['foo', 'bar']
73
72
_ports = [80, 81, 82]
74
_port_calls = [ call(port) for port in _ports ]
73
_port_calls = [call(port) for port in _ports]
75
74
self.determine_packages.return_value = _pkgs
76
75
self.determine_ports.return_value = _ports
77
76
self._call_hook('install')
86
85
self.assertTrue(self.execd_preinstall.called)
88
87
def test_config_changed(self):
88
self.openstack_upgrade_available.return_value = True
89
89
self.relation_ids.side_effect = self._fake_relids
90
90
_n_api_rel_joined = self.patch('neutron_api_relation_joined')
91
_n_plugin_api_rel_joined = self.patch('neutron_plugin_api_relation_joined')
91
_n_plugin_api_rel_joined =\
92
self.patch('neutron_plugin_api_relation_joined')
92
93
_amqp_rel_joined = self.patch('amqp_joined')
93
94
_id_rel_joined = self.patch('identity_joined')
94
95
self._call_hook('config-changed')
97
98
self.assertTrue(_amqp_rel_joined.called)
98
99
self.assertTrue(_id_rel_joined.called)
99
100
self.assertTrue(self.CONFIGS.write_all.called)
101
self.assertTrue(self.do_openstack_upgrade.called)
101
103
def test_amqp_joined(self):
102
104
self._call_hook('amqp-relation-joined')
200
202
self._call_hook('identity-service-relation-changed')
201
203
self.assertTrue(self.CONFIGS.write.called_with(NEUTRON_CONF))
202
204
self.assertTrue(_api_rel_joined.called)
204
206
@patch.object(hooks, '_get_keystone_info')
205
207
def test_neutron_api_relation_no_id_joined(self, _get_ks_info):
206
208
_get_ks_info.return_value = None
239
241
@patch.object(hooks, '_get_keystone_info')
240
242
def test_neutron_api_relation_joined(self, _get_ks_info):
242
'service_tenant': 'bob',
243
'service_username': 'bob',
244
'service_password': 'bob',
245
'auth_url': 'http://127.0.0.2',
244
'service_tenant': 'bob',
245
'service_username': 'bob',
246
'service_password': 'bob',
247
'auth_url': 'http://127.0.0.2',
247
249
_get_ks_info.return_value = _ks_info
248
250
manager = 'neutron'
249
251
host = 'http://127.0.0.1'
292
294
@patch.object(hooks, 'get_hacluster_config')
293
295
def test_ha_joined(self, _get_ha_config):
298
'ha-bindiface': 'eth1',
299
'ha-mcastport': '5405',
300
'ha-bindiface': 'eth1',
301
'ha-mcastport': '5405',
301
303
vip_params = 'params ip="%s" cidr_netmask="%s" nic="%s"' % \
302
(_ha_config['vip'], _ha_config['vip_cidr'], _ha_config['vip_iface'])
304
(_ha_config['vip'], _ha_config['vip_cidr'],
305
_ha_config['vip_iface'])
304
306
_get_ha_config.return_value = _ha_config
305
307
_relation_data = {
306
308
'init_services': {'res_neutron_haproxy': 'haproxy'},
307
309
'corosync_bindiface': _ha_config['ha-bindiface'],
308
310
'corosync_mcastport': _ha_config['ha-mcastport'],
309
'resources': {'res_neutron_vip': 'ocf:heartbeat:IPaddr2',
310
'res_neutron_haproxy': 'lsb:haproxy'},
311
'resource_params': { 'res_neutron_vip': vip_params,
312
'res_neutron_haproxy': 'op monitor interval="5s"'},
313
'clones': { 'cl_nova_haproxy': 'res_neutron_haproxy' }
312
'res_neutron_vip': 'ocf:heartbeat:IPaddr2',
313
'res_neutron_haproxy': 'lsb:haproxy'
316
'res_neutron_vip': vip_params,
317
'res_neutron_haproxy': 'op monitor interval="5s"'
319
'clones': {'cl_nova_haproxy': 'res_neutron_haproxy'}
315
321
self._call_hook('ha-relation-joined')
316
322
self.relation_set.assert_called_with(