diff --git a/hooks/nova_cc_context.py b/hooks/nova_cc_context.py index ce51e535..d9a5aa3d 100644 --- a/hooks/nova_cc_context.py +++ b/hooks/nova_cc_context.py @@ -261,7 +261,7 @@ class NeutronCCContext(context.NeutronContext): ctxt['nova_url'] = "{}:8774/v2".format(canonical_url()) if use_local_neutron_api(): - ctxt['neutron_url'] = "{}:9696/v2".format(canonical_url()) + ctxt['neutron_url'] = "{}:9696".format(canonical_url()) return ctxt diff --git a/unit_tests/test_nova_cc_contexts.py b/unit_tests/test_nova_cc_contexts.py index 0fef595a..fdd63334 100644 --- a/unit_tests/test_nova_cc_contexts.py +++ b/unit_tests/test_nova_cc_contexts.py @@ -84,9 +84,12 @@ class NovaComputeContextTests(CharmTestCase): self.assertEqual({'memcached_servers': "%s:11211" % (formated_ip, )}, instance_console()) + @mock.patch.object(context, 'use_local_neutron_api') @mock.patch('charmhelpers.contrib.openstack.ip.config') @mock.patch('charmhelpers.contrib.openstack.ip.is_clustered') - def test_neutron_context_single_vip(self, mock_is_clustered, mock_config): + def test_neutron_context_single_vip(self, mock_is_clustered, mock_config, + mock_use_local_neutron_api): + mock_use_local_neutron_api.return_value = True self.https.return_value = False mock_is_clustered.return_value = True config = {'vip': '10.0.0.1', @@ -94,12 +97,22 @@ class NovaComputeContextTests(CharmTestCase): 'os-admin-network': '10.0.1.0/24', 'os-public-network': '10.0.2.0/24'} mock_config.side_effect = lambda key: config[key] + + mock_use_local_neutron_api.return_value = False ctxt = context.NeutronCCContext()() self.assertEqual(ctxt['nova_url'], 'http://10.0.0.1:8774/v2') + self.assertFalse('neutron_url' in ctxt) + mock_use_local_neutron_api.return_value = True + ctxt = context.NeutronCCContext()() + self.assertEqual(ctxt['nova_url'], 'http://10.0.0.1:8774/v2') + self.assertEqual(ctxt['neutron_url'], 'http://10.0.0.1:9696') + + @mock.patch.object(context, 'use_local_neutron_api') @mock.patch('charmhelpers.contrib.openstack.ip.config') @mock.patch('charmhelpers.contrib.openstack.ip.is_clustered') - def test_neutron_context_multi_vip(self, mock_is_clustered, mock_config): + def test_neutron_context_multi_vip(self, mock_is_clustered, mock_config, + mock_use_local_neutron_api): self.https.return_value = False mock_is_clustered.return_value = True config = {'vip': '10.0.0.1 10.0.1.1 10.0.2.1', @@ -107,5 +120,23 @@ class NovaComputeContextTests(CharmTestCase): 'os-admin-network': '10.0.0.0/24', 'os-public-network': '10.0.2.0/24'} mock_config.side_effect = lambda key: config[key] + + mock_use_local_neutron_api.return_value = False ctxt = context.NeutronCCContext()() self.assertEqual(ctxt['nova_url'], 'http://10.0.1.1:8774/v2') + self.assertFalse('neutron_url' in ctxt) + + mock_use_local_neutron_api.return_value = True + ctxt = context.NeutronCCContext()() + self.assertEqual(ctxt['nova_url'], 'http://10.0.1.1:8774/v2') + self.assertEqual(ctxt['neutron_url'], 'http://10.0.1.1:9696') + + def test_use_local_neutron_api(self): + self.relation_ids.return_value = [] + self.related_units.return_value = [] + self.assertTrue(context.use_local_neutron_api()) + self.relation_ids.return_value = ['rel:0'] + self.related_units.return_value = [] + self.assertTrue(context.use_local_neutron_api()) + self.related_units.return_value = ['unit/0'] + self.assertFalse(context.use_local_neutron_api())