~openstack-charmers-archive/charms/trusty/neutron-gateway/trunk

« back to all changes in this revision

Viewing changes to unit_tests/test_neutron_utils.py

  • Committer: James Page
  • Date: 2015-10-22 13:23:58 UTC
  • Revision ID: james.page@ubuntu.com-20151022132358-qin1nvlnqn4aezaz
Tags: 15.10
15.10 Charm release

Show diffs side-by-side

added added

removed removed

Lines of Context:
159
159
        self.assertTrue('python-neutron-fwaas' in neutron_utils.get_packages())
160
160
 
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)
 
171
 
 
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'
210
221
            call('br-ex'),
211
222
            call('br-data')
212
223
        ])
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)
214
226
 
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)
227
239
 
 
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([
 
247
            call('br-int'),
 
248
            call('br-ex'),
 
249
            call('br1')
 
250
        ])
 
251
        calls = [call('br1', 'eth0.100', promisc=True),
 
252
                 call('br1', 'eth0.200', promisc=True)]
 
253
        self.add_bridge_port.assert_has_calls(calls)
 
254
 
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)
239
267
        dpkg_opts = [
265
293
                                          ['hook_contexts']
266
294
            )
267
295
 
 
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]
 
308
        for conf in confs:
 
309
            configs.register.assert_any_call(
 
310
                conf,
 
311
                neutron_utils.CONFIG_FILES['neutron']
 
312
                                          [neutron_utils.OVS_ODL][conf]
 
313
                                          ['hook_contexts']
 
314
            )
 
315
 
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
320
368
 
321
369
        self.assertDictEqual(neutron_utils.restart_map(), ex_map)
322
370
 
 
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'
 
374
        ex_map = {
 
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'],
 
401
        }
 
402
 
 
403
        self.assertDictEqual(neutron_utils.restart_map(), ex_map)
 
404
 
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',