From d1c4675e5c35257b84cd69969c6e67575faf19db Mon Sep 17 00:00:00 2001 From: spisarski Date: Thu, 4 May 2017 12:43:53 -0600 Subject: Modified code to support both Python 2.7 and 3.x * Tested on Python 2.7.10 and 3.4.4 * Updated installation documentation JIRA: SNAPS-30 Change-Id: I94a37d218be8ea47bbbcfb560197737430fcb3ba Signed-off-by: spisarski --- snaps/openstack/create_router.py | 74 ++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 40 deletions(-) (limited to 'snaps/openstack/create_router.py') diff --git a/snaps/openstack/create_router.py b/snaps/openstack/create_router.py index 70c6b76..5c461cc 100644 --- a/snaps/openstack/create_router.py +++ b/snaps/openstack/create_router.py @@ -1,4 +1,4 @@ -# Copyright (c) 2016 Cable Television Laboratories, Inc. ("CableLabs") +# Copyright (c) 2017 Cable Television Laboratories, Inc. ("CableLabs") # and others. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -59,46 +59,42 @@ class OpenStackRouter: :return: the router object """ logger.debug('Creating Router with name - ' + self.router_settings.name) - try: - existing = False - router_inst = neutron_utils.get_router_by_name(self.__neutron, self.router_settings.name) - if router_inst: - self.__router = router_inst - existing = True + existing = False + router_inst = neutron_utils.get_router_by_name(self.__neutron, self.router_settings.name) + if router_inst: + self.__router = router_inst + existing = True + else: + if not cleanup: + 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_by_name(self.__neutron, internal_subnet_name) + if internal_subnet: + self.__internal_subnets.append(internal_subnet) + if internal_subnet and not cleanup and not existing: + logger.debug('Adding router to subnet...') + self.__internal_router_interface = neutron_utils.add_interface_router( + self.__neutron, self.__router, subnet=internal_subnet) else: - if not cleanup: - 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_by_name(self.__neutron, internal_subnet_name) - if internal_subnet: - self.__internal_subnets.append(internal_subnet) - if internal_subnet and not cleanup and not existing: - logger.debug('Adding router to subnet...') - self.__internal_router_interface = neutron_utils.add_interface_router( - self.__neutron, self.__router, subnet=internal_subnet) - else: - raise Exception('Subnet not found with name ' + internal_subnet_name) + raise Exception('Subnet not found with name ' + internal_subnet_name) + + for port_setting in self.router_settings.port_settings: + port = neutron_utils.get_port_by_name(self.__neutron, port_setting.name) + logger.info('Retrieved port ' + port_setting.name + ' for router - ' + self.router_settings.name) + if port: + self.__ports.append(port) - for port_setting in self.router_settings.port_settings: - port = neutron_utils.get_port_by_name(self.__neutron, port_setting.name) - logger.info('Retrieved port ' + port_setting.name + ' for router - ' + self.router_settings.name) + if not port and not cleanup and not existing: + port = neutron_utils.create_port(self.__neutron, self.__os_creds, port_setting) if port: + logger.info('Created port ' + port_setting.name + ' for router - ' + self.router_settings.name) self.__ports.append(port) + neutron_utils.add_interface_router(self.__neutron, self.__router, port=port) + else: + raise Exception('Error creating port with name - ' + port_setting.name) - if not port and not cleanup and not existing: - port = neutron_utils.create_port(self.__neutron, self.__os_creds, port_setting) - if port: - logger.info('Created port ' + port_setting.name + ' for router - ' + self.router_settings.name) - self.__ports.append(port) - neutron_utils.add_interface_router(self.__neutron, self.__router, port=port) - else: - raise Exception('Error creating port with name - ' + port_setting.name) - - return self.__router - except Exception as e: - self.clean() - raise Exception(e.message) + return self.__router def clean(self): """ @@ -163,8 +159,6 @@ class RouterSettings: policies. :param external_gateway: Name of the external network to which to route :param admin_state_up: The administrative status of the router. True = up / False = down (default True) - :param enable_snat: Boolean value. Enable Source NAT (SNAT) attribute. Default is True. To persist this - attribute value, set the enable_snat_by_default option in the neutron.conf file. :param external_fixed_ips: Dictionary containing the IP address parameters. :param internal_subnets: List of subnet names to which to connect this router for Floating IP purposes :param port_settings: List of PortSettings objects @@ -238,7 +232,7 @@ class RouterSettings: else: raise Exception('Could not find the external network named - ' + self.external_gateway) - #TODO: Enable SNAT option for Router - #TODO: Add external_fixed_ips Tests + # TODO: Enable SNAT option for Router + # TODO: Add external_fixed_ips Tests return {'router': out} -- cgit 1.2.3-korg