def __init__(self, region_name, project_id): self.client = openstack_clients.get_neutronclient( region=region_name) self.project_id = project_id
def _create_network(self): neutron = openstack_clients.get_neutronclient(region=self.region) defaults = self.settings.get(self.region, {}) if not self.get_cache('network_id'): try: network_body = { "network": { "name": defaults['network_name'], 'tenant_id': self.project_id, "admin_state_up": True } } network = neutron.create_network(body=network_body) except Exception as e: self.add_note("Error: '%s' while creating network: %s" % (e, defaults['network_name'])) raise self.set_cache('network_id', network['network']['id']) self.add_note("Network %s created for project %s" % (defaults['network_name'], self.project_id)) else: self.add_note("Network %s already created for project %s" % (defaults['network_name'], self.project_id)) if not self.get_cache('subnet_id'): try: subnet_body = { "subnet": { "network_id": self.get_cache('network_id'), "ip_version": 4, 'tenant_id': self.project_id, 'dns_nameservers': defaults['DNS_NAMESERVERS'], "cidr": defaults['SUBNET_CIDR'] } } subnet = neutron.create_subnet(body=subnet_body) except Exception as e: self.add_note("Error: '%s' while creating subnet" % e) raise self.set_cache('subnet_id', subnet['subnet']['id']) self.add_note("Subnet created for network %s" % defaults['network_name']) else: self.add_note("Subnet already created for network %s" % defaults['network_name']) if not self.get_cache('router_id'): try: router_body = { "router": { "name": defaults['router_name'], "external_gateway_info": { "network_id": defaults['public_network'] }, 'tenant_id': self.project_id, "admin_state_up": True } } router = neutron.create_router(body=router_body) except Exception as e: self.add_note("Error: '%s' while creating router: %s" % (e, defaults['router_name'])) raise self.set_cache('router_id', router['router']['id']) self.add_note("Router created for project %s" % self.project_id) else: self.add_note("Router already created for project %s" % self.project_id) if not self.get_cache('port_id'): try: interface_body = {"subnet_id": self.get_cache('subnet_id')} interface = neutron.add_interface_router( self.get_cache('router_id'), body=interface_body) except Exception as e: self.add_note("Error: '%s' while attaching interface" % e) raise self.set_cache('port_id', interface['port_id']) self.add_note("Interface added to router for subnet") else: self.add_note("Interface added to router for project %s" % self.project_id)
def _create_network(self): neutron = openstack_clients.get_neutronclient(region=self.region) try: region_config = self.config.regions[self.region] network_config = self.config.region_defaults.overlay(region_config) except KeyError: network_config = self.config.region_defaults if not self.get_cache("network_id"): try: network_body = { "network": { "name": network_config.network_name, "tenant_id": self.project_id, "admin_state_up": True, } } network = neutron.create_network(body=network_body) except Exception as e: self.add_note( "Error: '%s' while creating network: %s" % (e, network_config.network_name) ) raise self.set_cache("network_id", network["network"]["id"]) self.add_note( "Network %s created for project %s" % (network_config.network_name, self.project_id) ) else: self.add_note( "Network %s already created for project %s" % (network_config.network_name, self.project_id) ) if not self.get_cache("subnet_id"): try: subnet_body = { "subnet": { "network_id": self.get_cache("network_id"), "ip_version": 4, "tenant_id": self.project_id, "dns_nameservers": network_config.dns_nameservers, "cidr": network_config.subnet_cidr, } } subnet = neutron.create_subnet(body=subnet_body) except Exception as e: self.add_note("Error: '%s' while creating subnet" % e) raise self.set_cache("subnet_id", subnet["subnet"]["id"]) self.add_note("Subnet created for network %s" % network_config.network_name) else: self.add_note( "Subnet already created for network %s" % network_config.network_name ) if not self.get_cache("router_id"): try: router_body = { "router": { "name": network_config.router_name, "external_gateway_info": { "network_id": network_config.public_network }, "tenant_id": self.project_id, "admin_state_up": True, } } router = neutron.create_router(body=router_body) except Exception as e: self.add_note( "Error: '%s' while creating router: %s" % (e, network_config.router_name) ) raise self.set_cache("router_id", router["router"]["id"]) self.add_note("Router created for project %s" % self.project_id) else: self.add_note("Router already created for project %s" % self.project_id) if not self.get_cache("port_id"): try: interface_body = {"subnet_id": self.get_cache("subnet_id")} interface = neutron.add_interface_router( self.get_cache("router_id"), body=interface_body ) except Exception as e: self.add_note("Error: '%s' while attaching interface" % e) raise self.set_cache("port_id", interface["port_id"]) self.add_note("Interface added to router for subnet") else: self.add_note("Interface added to router for project %s" % self.project_id)