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()) # 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() # Get optional use_juju_wait for network 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)) # Configure the overcloud network network.setup_sdn(network_config, keystone_session=keystone_session)
def destroy(model_name): """Run all steps to cleaup after a test run. Note: on the OpenStack provider we also verify after the destroy model call that the instances associated with the model really are gone. Reap any instances that have the model name in them before returning. Bug: https://bugs.launchpad.net/juju/+bug/1913418 :param model: Name of model to remove :type bundle: str """ machines = model.get_status()["machines"] zaza.controller.destroy_model(model_name) if juju_utils.get_provider_type() == "openstack": # only import openstack_provider if it's needed. This avoids forcing # zaza to have dependencies for providers that the user isn't using. import zaza.utilities.openstack_provider as op op.clean_up_instances(model_name, machines)
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) parser.add_argument("--no-use-juju-wait", help=("don't use juju wait for the model to settle " "(default true)"), action="store_false", default=True) # 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, use_juju_wait=cli_utils.parse_arg( options, 'no_use_juju_wait')) overcloud_ks_sess = openstack_utils.get_overcloud_keystone_session( verify=cacert) setup_sdn(network_config, keystone_session=overcloud_ks_sess)
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 delete_unit_provider(unit): if juju_utils.get_provider_type() == 'openstack': delete_unit_openstack(unit)