From f65dbaef830fe7121173fdb83e5e4dde09b11a8a Mon Sep 17 00:00:00 2001 From: spisarski Date: Tue, 17 Apr 2018 08:24:18 -0600 Subject: Fixed bug with regards to subnet lookups. Neutron returns all subnets regardless of visibility which cause problems within routers if there is another subnet with the same name attached to a different network. JIRA: SNAPS-304 In addition, this patch contains two other minor fixes. launch_utils.py - raise an exception when the creator is not properly instantiated network.py - allow fixed IPs to be none. Change-Id: Ib343074d925be4592a713727a03d5b531890eada Signed-off-by: spisarski --- snaps/config/tests/router_tests.py | 54 ++++++++++++++++++++++++++++++++++---- 1 file changed, 49 insertions(+), 5 deletions(-) (limited to 'snaps/config/tests/router_tests.py') diff --git a/snaps/config/tests/router_tests.py b/snaps/config/tests/router_tests.py index 2c8f91f..1397f23 100644 --- a/snaps/config/tests/router_tests.py +++ b/snaps/config/tests/router_tests.py @@ -31,6 +31,25 @@ class RouterConfigUnitTests(unittest.TestCase): with self.assertRaises(RouterConfigError): RouterConfig(**dict()) + def test_bad_internal_subnets_bad_key(self): + with self.assertRaises(RouterConfigError): + RouterConfig(name='foo', internal_subnets={'foo': 'bar'}) + + def test_bad_internal_subnets_no_project(self): + with self.assertRaises(RouterConfigError): + RouterConfig(name='foo', internal_subnets={ + 'subnet': {'subnet_name': 'bar', 'network_name': 'foo'}}) + + def test_bad_internal_subnets_no_network(self): + with self.assertRaises(RouterConfigError): + RouterConfig(name='foo', internal_subnets={ + 'subnet': {'subnet_name': 'bar', 'project_name': 'foo'}}) + + def test_bad_internal_subnets_no_subnet(self): + with self.assertRaises(RouterConfigError): + RouterConfig(name='foo', internal_subnets={ + 'subnet': {'project_name': 'bar', 'network_name': 'foo'}}) + def test_name_only(self): settings = RouterConfig(name='foo') self.assertEqual('foo', settings.name) @@ -59,7 +78,7 @@ class RouterConfigUnitTests(unittest.TestCase): self.assertTrue(isinstance(settings.port_settings, list)) self.assertEqual(0, len(settings.port_settings)) - def test_all(self): + def test_all_internal_subnets_str(self): port_settings = PortConfig(name='foo', network_name='bar') settings = RouterConfig( name='foo', project_name='bar', external_gateway='foo_gateway', @@ -76,11 +95,36 @@ class RouterConfigUnitTests(unittest.TestCase): self.assertEqual(['10.0.0.1/24'], settings.internal_subnets) self.assertEqual([port_settings], settings.port_settings) - def test_config_all(self): + def test_all_internal_subnets_dict(self): + port_settings = PortConfig(name='foo', network_name='bar') + int_subs = {'subnet': { + 'project_name': 'proj_a', 'network_name': 'net_name', + 'subnet_name': 'sub_name'}} + settings = RouterConfig( + name='foo', project_name='bar', external_gateway='foo_gateway', + admin_state_up=True, enable_snat=False, + internal_subnets=int_subs, + interfaces=[port_settings]) + self.assertEqual('foo', settings.name) + self.assertEqual('bar', settings.project_name) + self.assertEqual('foo_gateway', settings.external_gateway) + self.assertTrue(settings.admin_state_up) + self.assertFalse(settings.enable_snat) + self.assertIsNotNone(settings.internal_subnets) + self.assertTrue(isinstance(settings.internal_subnets, dict)) + self.assertEqual(1, len(settings.internal_subnets)) + self.assertEqual(int_subs, settings.internal_subnets) + self.assertEqual([port_settings], settings.port_settings) + + def test_config_all_internal_subnets_str(self): + int_subs = {'subnet': { + 'project_name': 'proj_a', 'network_name': 'net_name', + 'subnet_name': 'sub_name'}} settings = RouterConfig( **{'name': 'foo', 'project_name': 'bar', 'external_gateway': 'foo_gateway', 'admin_state_up': True, - 'enable_snat': False, 'internal_subnets': ['10.0.0.1/24'], + 'enable_snat': False, + 'internal_subnets': int_subs, 'interfaces': [{'port': {'name': 'foo-port', 'network_name': 'bar-net'}}]}) @@ -90,9 +134,9 @@ class RouterConfigUnitTests(unittest.TestCase): self.assertTrue(settings.admin_state_up) self.assertFalse(settings.enable_snat) self.assertIsNotNone(settings.internal_subnets) - self.assertTrue(isinstance(settings.internal_subnets, list)) + self.assertTrue(isinstance(settings.internal_subnets, dict)) self.assertEqual(1, len(settings.internal_subnets)) - self.assertEqual(['10.0.0.1/24'], settings.internal_subnets) + self.assertEqual(int_subs, settings.internal_subnets) self.assertEqual([PortConfig(**{'name': 'foo-port', 'network_name': 'bar-net'})], settings.port_settings) -- cgit 1.2.3-korg