예제 #1
0
파일: setup.py 프로젝트: sahid/zaza
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)
예제 #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()

    # 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)
예제 #3
0
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)
예제 #4
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)
    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)
예제 #5
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)
def delete_unit_provider(unit):
    if juju_utils.get_provider_type() == 'openstack':
        delete_unit_openstack(unit)