Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
def delete_unit_provider(unit):
    if juju_utils.get_provider_type() == 'openstack':
        delete_unit_openstack(unit)