159
159
self.assertTrue('python-neutron-fwaas' in neutron_utils.get_packages())
161
161
@patch.object(neutron_utils, 'git_install_requested')
162
def test_get_packages_ovs_liberty(self, git_requested):
163
git_requested.return_value = False
164
self.config.return_value = 'ovs'
165
self.get_os_codename_install_source.return_value = 'liberty'
166
packages = neutron_utils.get_packages()
167
self.assertTrue('neutron-metering-agent' in packages)
168
self.assertFalse('neutron-plugin-metering-agent' in packages)
169
self.assertFalse('python-mysqldb' in packages)
170
self.assertTrue('python-pymysql' in packages)
172
@patch.object(neutron_utils, 'git_install_requested')
162
173
def test_get_packages_l3ha(self, git_requested):
163
174
git_requested.return_value = False
164
175
self.config.return_value = 'ovs'
213
self.assertTrue(self.add_bridge_port.called)
224
calls = [call('br-data', 'eth0', promisc=True)]
225
self.add_bridge_port.assert_has_calls(calls)
215
# Now test with bridge:port format
227
# Now test with bridge:port format and bogus bridge
216
228
self.test_config.set('data-port', 'br-foo:eth0')
217
229
self.add_bridge.reset_mock()
218
230
self.add_bridge_port.reset_mock()
225
237
# Not called since we have a bogus bridge in data-ports
226
238
self.assertFalse(self.add_bridge_port.called)
240
# Now test with bridge:port format
241
self.test_config.set('bridge-mappings', 'net1:br1')
242
self.test_config.set('data-port', 'br1:eth0.100 br1:eth0.200')
243
self.add_bridge.reset_mock()
244
self.add_bridge_port.reset_mock()
245
neutron_utils.configure_ovs()
246
self.add_bridge.assert_has_calls([
251
calls = [call('br1', 'eth0.100', promisc=True),
252
call('br1', 'eth0.200', promisc=True)]
253
self.add_bridge_port.assert_has_calls(calls)
228
255
@patch.object(neutron_utils, 'git_install_requested')
229
256
def test_do_openstack_upgrade(self, git_requested):
230
257
git_requested.return_value = False
233
260
self.test_config.set('openstack-origin', 'cloud:precise-havana')
234
261
self.test_config.set('plugin', 'ovs')
235
262
self.get_os_codename_install_source.return_value = 'havana'
236
neutron_utils.do_openstack_upgrade()
263
configs = neutron_utils.register_configs()
264
neutron_utils.do_openstack_upgrade(configs)
237
265
self.assertTrue(self.log.called)
238
266
self.apt_update.assert_called_with(fatal=True)
265
293
['hook_contexts']
296
def test_register_configs_ovs_odl(self):
297
self.config.side_effect = self.test_config.get
298
self.test_config.set('plugin', 'ovs-odl')
299
self.is_relation_made.return_value = False
300
self.get_os_codename_install_source.return_value = 'icehouse'
301
configs = neutron_utils.register_configs()
302
confs = [neutron_utils.NEUTRON_DHCP_AGENT_CONF,
303
neutron_utils.NEUTRON_METADATA_AGENT_CONF,
304
neutron_utils.NOVA_CONF,
305
neutron_utils.NEUTRON_CONF,
306
neutron_utils.NEUTRON_L3_AGENT_CONF,
307
neutron_utils.EXT_PORT_CONF]
309
configs.register.assert_any_call(
311
neutron_utils.CONFIG_FILES['neutron']
312
[neutron_utils.OVS_ODL][conf]
268
316
def test_register_configs_amqp_nova(self):
269
317
self.config.return_value = 'ovs'
270
318
self.is_relation_made.return_value = True
321
369
self.assertDictEqual(neutron_utils.restart_map(), ex_map)
371
def test_restart_map_ovs_odl(self):
372
self.config.return_value = 'ovs-odl'
373
self.get_os_codename_install_source.return_value = 'icehouse'
375
neutron_utils.NEUTRON_CONF: ['neutron-l3-agent',
376
'neutron-dhcp-agent',
377
'neutron-metadata-agent',
378
'neutron-plugin-metering-agent',
379
'neutron-metering-agent',
380
'neutron-lbaas-agent',
381
'neutron-plugin-vpn-agent',
382
'neutron-vpn-agent'],
383
neutron_utils.NEUTRON_DNSMASQ_CONF: ['neutron-dhcp-agent'],
384
neutron_utils.NEUTRON_LBAAS_AGENT_CONF:
385
['neutron-lbaas-agent'],
386
neutron_utils.NEUTRON_METADATA_AGENT_CONF:
387
['neutron-metadata-agent'],
388
neutron_utils.NEUTRON_VPNAAS_AGENT_CONF: [
389
'neutron-plugin-vpn-agent',
390
'neutron-vpn-agent'],
391
neutron_utils.NEUTRON_L3_AGENT_CONF: ['neutron-l3-agent',
392
'neutron-vpn-agent'],
393
neutron_utils.NEUTRON_DHCP_AGENT_CONF: ['neutron-dhcp-agent'],
394
neutron_utils.NEUTRON_FWAAS_CONF: ['neutron-l3-agent',
395
'neutron-vpn-agent'],
396
neutron_utils.NEUTRON_METERING_AGENT_CONF:
397
['neutron-metering-agent', 'neutron-plugin-metering-agent'],
398
neutron_utils.NOVA_CONF: ['nova-api-metadata'],
399
neutron_utils.EXT_PORT_CONF: ['ext-port'],
400
neutron_utils.PHY_NIC_MTU_CONF: ['os-charm-phy-nic-mtu'],
403
self.assertDictEqual(neutron_utils.restart_map(), ex_map)
323
405
def test_register_configs_nvp(self):
324
406
self.config.return_value = 'nvp'
325
407
self.is_relation_made.return_value = False
866
948
neutron_ovs_cleanup_context = {
867
949
'service_description': 'Neutron OVS cleanup',
868
950
'service_name': service_name,
951
'user_name': user_name,
952
'start_dir': '/var/lib/neutron',
869
953
'process_name': 'neutron-ovs-cleanup',
870
954
'executable_name': 'joined-string',
871
955
'config_file': '/etc/neutron/neutron.conf',