diff options
author | spisarski <s.pisarski@cablelabs.com> | 2018-04-17 08:24:18 -0600 |
---|---|---|
committer | Steven Pisarski <s.pisarski@cablelabs.com> | 2018-04-19 22:08:39 +0000 |
commit | 4edc3d87392cf78c3f046217543fb76380413306 (patch) | |
tree | b138f146044ca1ff457ff25ac065bbdaeda6d320 /snaps/openstack/create_router.py | |
parent | 844c049771c5b66eb7bd77e6f18f321674689d54 (diff) |
Fixed bug with regards to subnet lookups.opnfv-6.1.0opnfv-6.0.0
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 <s.pisarski@cablelabs.com>
Diffstat (limited to 'snaps/openstack/create_router.py')
-rw-r--r-- | snaps/openstack/create_router.py | 37 |
1 files changed, 28 insertions, 9 deletions
diff --git a/snaps/openstack/create_router.py b/snaps/openstack/create_router.py index 4395059..260fc03 100644 --- a/snaps/openstack/create_router.py +++ b/snaps/openstack/create_router.py @@ -18,7 +18,7 @@ from neutronclient.common.exceptions import NotFound, Unauthorized from snaps.config.router import RouterConfig from snaps.openstack.openstack_creator import OpenStackNetworkObject -from snaps.openstack.utils import neutron_utils, keystone_utils +from snaps.openstack.utils import neutron_utils __author__ = 'spisarski' @@ -71,14 +71,13 @@ class OpenStackRouter(OpenStackNetworkObject): self.router_settings.name, e) if self.__router: - for internal_subnet_name in self.router_settings.internal_subnets: - internal_subnet = neutron_utils.get_subnet( - self._neutron, subnet_name=internal_subnet_name) + for sub_config in self.router_settings.internal_subnets: + internal_subnet = self.__get_internal_subnet(sub_config) if internal_subnet: self.__internal_subnets.append(internal_subnet) else: raise RouterCreationError( - 'Subnet not found with name ' + internal_subnet_name) + 'Subnet not found with name ' + internal_subnet.name) for port_setting in self.router_settings.port_settings: port = neutron_utils.get_port( @@ -100,9 +99,8 @@ class OpenStackRouter(OpenStackNetworkObject): self.__router = neutron_utils.create_router( self._neutron, self._os_creds, self.router_settings) - for internal_subnet_name in self.router_settings.internal_subnets: - internal_subnet = neutron_utils.get_subnet( - self._neutron, subnet_name=internal_subnet_name) + for sub_config in self.router_settings.internal_subnets: + internal_subnet = self.__get_internal_subnet(sub_config) if internal_subnet: self.__internal_subnets.append(internal_subnet) if internal_subnet: @@ -113,7 +111,7 @@ class OpenStackRouter(OpenStackNetworkObject): self.__internal_router_interface = router_intf else: raise RouterCreationError( - 'Subnet not found with name ' + internal_subnet_name) + 'Subnet not found with name ' + internal_subnet.name) for port_setting in self.router_settings.port_settings: port = neutron_utils.get_port( @@ -145,6 +143,27 @@ class OpenStackRouter(OpenStackNetworkObject): self._neutron, self.__router.id) return self.__router + def __get_internal_subnet(self, sub_config): + """ + returns the Subnet domain object from the subnet configurator + :param sub_config: + :return: + """ + if isinstance(sub_config, str): + return neutron_utils.get_subnet_by_name( + self._neutron, self._keystone, + subnet_name=sub_config) + if isinstance(sub_config, dict): + sub_dict = sub_config['subnet'] + network = neutron_utils.get_network( + self._neutron, self._keystone, + network_name=sub_dict['network_name'], + project_name=sub_dict['project_name']) + if network: + return neutron_utils.get_subnet( + self._neutron, network, + subnet_name=sub_dict['subnet_name']) + def clean(self): """ Removes and deletes all items created in reverse order. |