def basic_overcloud_network(): """Run setup for neutron networking. Configure the following: The overcloud network using subnet pools """ cli_utils.setup_logging() # Get network configuration settings network_config = {} # Declared overcloud settings network_config.update(OVERCLOUD_NETWORK_CONFIG) # Default undercloud settings network_config.update(DEFAULT_UNDERCLOUD_NETWORK_CONFIG) # Environment specific settings network_config.update(generic_utils.get_undercloud_env_vars()) # Deployed model settings if (model.get_application_config('neutron-api').get('enable-dvr').get( 'value')): network_config.update({"dvr_enabled": True}) # Get keystone session keystone_session = openstack_utils.get_overcloud_keystone_session() # Handle network for Openstack-on-Openstack scenarios if juju_utils.get_provider_type() == "openstack": undercloud_ks_sess = openstack_utils.get_undercloud_keystone_session() network.setup_gateway_ext_port(network_config, keystone_session=undercloud_ks_sess) # Confugre the overcloud network network.setup_sdn(network_config, keystone_session=keystone_session)
def basic_overcloud_network(limit_gws=None): """Run setup for neutron networking. Configure the following: The overcloud network using subnet pools :param limit_gws: Limit the number of gateways that get a port attached :type limit_gws: int """ cli_utils.setup_logging() # Get network configuration settings network_config = {} # Declared overcloud settings network_config.update(OVERCLOUD_NETWORK_CONFIG) # Default undercloud settings network_config.update(DEFAULT_UNDERCLOUD_NETWORK_CONFIG) # Environment specific settings network_config.update(generic_utils.get_undercloud_env_vars()) # Get keystone session keystone_session = openstack_utils.get_overcloud_keystone_session() # Handle network for Openstack-on-Openstack scenarios if juju_utils.get_provider_type() == "openstack": undercloud_ks_sess = openstack_utils.get_undercloud_keystone_session() network.setup_gateway_ext_port(network_config, keystone_session=undercloud_ks_sess, limit_gws=None) # Confugre the overcloud network network.setup_sdn(network_config, keystone_session=keystone_session)
def basic_overcloud_network(limit_gws=None): """Run setup for neutron networking. Configure the following: The overcloud network using subnet pools :param limit_gws: Limit the number of gateways that get a port attached :type limit_gws: int """ cli_utils.setup_logging() # Get network configuration settings network_config = {} # Declared overcloud settings network_config.update(OVERCLOUD_NETWORK_CONFIG) # Default undercloud settings network_config.update(DEFAULT_UNDERCLOUD_NETWORK_CONFIG) # Environment specific settings network_config.update(generic_utils.get_undercloud_env_vars()) # Get keystone session keystone_session = openstack_utils.get_overcloud_keystone_session() # Get optional use_juju_wait for netw ork option options = (lifecycle_utils .get_charm_config(fatal=False) .get('configure_options', {})) use_juju_wait = options.get( 'configure_gateway_ext_port_use_juju_wait', True) # Handle network for OpenStack-on-OpenStack scenarios provider_type = juju_utils.get_provider_type() if provider_type == "openstack": undercloud_ks_sess = openstack_utils.get_undercloud_keystone_session() network.setup_gateway_ext_port(network_config, keystone_session=undercloud_ks_sess, limit_gws=limit_gws, use_juju_wait=use_juju_wait) elif provider_type == "maas": # NOTE(fnordahl): After validation of the MAAS+Netplan Open vSwitch # integration support, we would most likely want to add multiple modes # of operation with MAAS. # # Perform charm based OVS configuration openstack_utils.configure_charmed_openstack_on_maas( network_config, limit_gws=limit_gws) else: logging.warning('Unknown Juju provider type, "{}", will not perform' ' charm network configuration.' .format(provider_type)) # Confugre the overcloud network network.setup_sdn(network_config, keystone_session=keystone_session)
def test_get_provider_type(self): self.patch_object(juju_utils, "get_cloud_configs") self.get_cloud_configs.return_value = {"type": self.cloud_type} self.assertEqual(juju_utils.get_provider_type(), self.cloud_type) self.get_cloud_configs.assert_called_once_with(self.cloud_name)
def run_from_cli(**kwargs): """Run network configurations from CLI. Use a YAML file of network configuration settings to configure the overcloud network. YAML file of the form: topology_name: network_type: gre router_name: provider-router private_net_cidr: 192.168.21.0/24 external_dns: 10.5.0.2 external_net_cidr: 10.5.0.0/16 external_net_name: ext_net external_subnet_name: ext_net_subnet default_gateway: 10.5.0.1 start_floating_ip: 10.5.150.0 end_floating_ip: 10.5.200.254 :param kwargs: Allow for override of argparse options :returns: None :rtype: None """ cli_utils.setup_logging() parser = argparse.ArgumentParser() parser.add_argument("net_topology", help="network topology type, default is GRE", default="gre", nargs="?") parser.add_argument("--ignore_env_vars", "-i", help="do not override using environment variables", action="store_true", default=False) parser.add_argument("--net_topology_file", "-f", help="Network topology file location", default="network.yaml") parser.add_argument("--cacert", help="Path to CA certificate bundle file", default=None) # Handle CLI options options = parser.parse_args() net_topology = (kwargs.get('net_toplogoy') or cli_utils.parse_arg(options, "net_topology")) net_topology_file = (kwargs.get('net_topology_file') or cli_utils.parse_arg(options, "net_topology_file")) ignore_env_vars = (kwargs.get('ignore_env_vars') or cli_utils.parse_arg(options, "ignore_env_vars")) cacert = (kwargs.get('cacert') or cli_utils.parse_arg(options, "cacert")) logging.info("Setting up %s network" % (net_topology)) network_config = generic_utils.get_network_config( net_topology, ignore_env_vars, net_topology_file) # Handle network for Openstack-on-Openstack scenarios if juju_utils.get_provider_type() == "openstack": undercloud_ks_sess = openstack_utils.get_undercloud_keystone_session( verify=cacert) setup_gateway_ext_port(network_config, keystone_session=undercloud_ks_sess) overcloud_ks_sess = openstack_utils.get_overcloud_keystone_session( verify=cacert) setup_sdn(network_config, keystone_session=overcloud_ks_sess)
def delete_unit_provider(unit): if juju_utils.get_provider_type() == 'openstack': delete_unit_openstack(unit)