def test_create_address_scope(self): self.patch_object(openstack_utils, "get_net_uuid") self.get_net_uuid.return_value = self.net_uuid # Already exists address_scope = openstack_utils.create_address_scope( self.neutronclient, self.project_id, self.address_scope_name) self.assertEqual(address_scope, self.address_scope["address_scope"]) self.neutronclient.create_address_scope.assert_not_called() # Does not yet exist self.neutronclient.list_address_scopes.return_value = { "address_scopes": [] } address_scope_msg = copy.deepcopy(self.address_scope) address_scope_msg["address_scope"].pop("id") address_scope = openstack_utils.create_address_scope( self.neutronclient, self.project_id, self.address_scope_name) self.assertEqual(address_scope, self.address_scope["address_scope"]) self.neutronclient.create_address_scope.assert_called_once_with( address_scope_msg)
def setup_sdn(network_config, keystone_session=None): """Perform setup for Software Defined Network. :param network_config: Network configuration settings dictionary :type network_config: dict :param keystone_session: Keystone session object for overcloud :type keystone_session: keystoneauth1.session.Session object :returns: None :rtype: None """ # If a session has not been provided, acquire one if not keystone_session: keystone_session = openstack_utils.get_overcloud_keystone_session() # Get authenticated clients keystone_client = openstack_utils.get_keystone_session_client( keystone_session) neutron_client = openstack_utils.get_neutron_session_client( keystone_session) admin_domain = None if openstack_utils.get_keystone_api_version() > 2: admin_domain = "admin_domain" # Resolve the project name from the overcloud openrc into a project id project_id = openstack_utils.get_project_id( keystone_client, "admin", domain_name=admin_domain, ) # Network Setup subnetpools = False if network_config.get("subnetpool_prefix"): subnetpools = True logging.info("Configuring overcloud network") # Create the external network ext_network = openstack_utils.create_provider_network( neutron_client, project_id, network_config["external_net_name"]) openstack_utils.create_provider_subnet( neutron_client, project_id, ext_network, network_config["external_subnet_name"], network_config["default_gateway"], network_config["external_net_cidr"], network_config["start_floating_ip"], network_config["end_floating_ip"]) provider_router = (openstack_utils.create_provider_router( neutron_client, project_id)) openstack_utils.plug_extnet_into_router(neutron_client, provider_router, ext_network) ip_version = network_config.get("ip_version") or 4 subnetpool = None if subnetpools: address_scope = openstack_utils.create_address_scope( neutron_client, project_id, network_config.get("address_scope"), ip_version=ip_version) subnetpool = openstack_utils.create_subnetpool( neutron_client, project_id, network_config.get("subnetpool_name"), network_config.get("subnetpool_prefix"), address_scope) project_network = openstack_utils.create_project_network( neutron_client, project_id, shared=False, network_type=network_config["network_type"]) project_subnet = openstack_utils.create_project_subnet( neutron_client, project_id, project_network, network_config.get("private_net_cidr"), subnetpool=subnetpool, ip_version=ip_version) openstack_utils.update_subnet_dns(neutron_client, project_subnet, network_config["external_dns"]) openstack_utils.plug_subnet_into_router(neutron_client, network_config["router_name"], project_network, project_subnet) openstack_utils.add_neutron_secgroup_rules(neutron_client, project_id)