示例#1
0
文件: tests.py 项目: n-pochet/zaza
 def setUpClass(cls):
     """Run setup for Series Upgrades."""
     cli_utils.setup_logging()
     cls.from_series = None
     cls.to_series = None
     cls.workaround_script = None
     cls.files = []
示例#2
0
def main():
    """Add a new model."""
    args = parse_args(sys.argv[1:])
    cli_utils.setup_logging(log_level=args.loglevel.upper())
    logging.info('model_name: {}'.format(args.model_name))
    prepare(args.model_name, test_directory=args.test_directory)
    run_report.output_event_report()
def main(argv):
    cli_utils.setup_logging()
    overcloud_novarc = openstack_utils.get_overcloud_auth()
    user_file = mojo_utils.get_mojo_file('keystone_users.yaml')
    user_config = generic_utils.get_yaml_config(user_file)
    try:
        cacert = os.path.join(os.environ.get('MOJO_LOCAL_DIR'), 'cacert.pem')
        os.stat(cacert)
    except FileNotFoundError:
        cacert = None
    keystone_session = openstack_utils.get_overcloud_keystone_session(
        verify=cacert)
    keystone_client = openstack_utils.get_keystone_session_client(
        keystone_session)
    if overcloud_novarc.get('API_VERSION', 2) == 2:
        projects = [user['project'] for user in user_config]
        mojo_os_utils.project_create(keystone_client, projects)
        mojo_os_utils.user_create_v2(keystone_client, user_config)
        # TODO validate this works without adding roles
        # mojo_os_utils.add_users_to_roles(keystone_client, user_config)
    else:
        for user in user_config:
            mojo_os_utils.domain_create(keystone_client, [user['domain']])
            mojo_os_utils.project_create(keystone_client, [user['project']],
                                         user['domain'])
        mojo_os_utils.user_create_v3(keystone_client, user_config)
示例#4
0
def main():
    """Execute full test run."""
    args = parse_args(sys.argv[1:])

    cli_utils.setup_logging(log_level=args.loglevel.upper())

    if args.dev and args.smoke:
        raise ValueError('Ambiguous arguments: --smoke and '
                         '--dev cannot be used together')

    if args.dev and args.bundle:
        raise ValueError('Ambiguous arguments: --bundle and '
                         '--dev cannot be used together')

    if args.smoke and args.bundle:
        raise ValueError('Ambiguous arguments: --bundle and '
                         '--smoke cannot be used together')

    func_test_runner(
        keep_model=args.keep_model,
        smoke=args.smoke,
        dev=args.dev,
        bundle=args.bundle)
    run_report.output_event_report()
    asyncio.get_event_loop().close()
示例#5
0
def main(argv):
    cli_utils.setup_logging()
    parser = argparse.ArgumentParser()
    parser.add_argument('-d',
                        '--domain_name',
                        help='DNS Domain Name. '
                        'Must end in a .',
                        default='mojo.serverstack.')
    options = parser.parse_args()
    domain_name = cli_utils.parse_arg(options, 'domain_name')

    os_version = openstack_utils.get_current_os_versions(
        'keystone')['keystone']
    if os_version >= 'queens':
        designate_api = '2'
    else:
        designate_api = '1'
    keystone_session = openstack_utils.get_overcloud_keystone_session()

    nova_client = openstack_utils.get_nova_session_client(keystone_session)
    des_client = mojo_os_utils.get_designate_session_client(
        keystone_session, all_tenants=True, client_version=designate_api)
    for server in nova_client.servers.list():
        for addr_info in server.addresses['private']:
            if addr_info['OS-EXT-IPS:type'] == 'floating':
                mojo_os_utils.check_dns_entry(
                    des_client, addr_info['addr'], domain_name,
                    '{}.{}'.format(server.name, domain_name))
示例#6
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)
def main():
    args = parse_args(sys.argv[1:])
    cli_utils.setup_logging(log_level=args.loglevel.upper())
    #session = zaza_os.get_undercloud_keystone_session()
    #neutron_client = zaza_os.get_neutron_session_client(session)
    #nova_client = zaza_os.get_nova_session_client(session, version=2.56)
    if args.vnic_binding_type == 'dummy':
        logging.warn('Running in dummy mode')
        binding_type = None
    else:
        binding_type = args.vnic_binding_type
    if args.action == 'summary':
        logging.info('Running Summary')
        summary(
            zaza_os.get_nova_session_client(
                zaza_os.get_undercloud_keystone_session(),
                version=2.56),
            args.application_name)
    elif args.action == 'balance':
        logging.info('Running balance')
        balance(
            zaza_os.get_nova_session_client(
                zaza_os.get_undercloud_keystone_session(),
                version=2.56),
            args.application_name)
    elif args.action == 'advertise':
        logging.info('Running advertise')
        advertise(
            args.application_name)
    elif args.action == 'listen':
        logging.info('Running listen')
        listen(
            args.application_name,
            args.cidr,
            int(args.listener_count))
示例#8
0
def main(argv):
    cli_utils.setup_logging()
    try:
        cacert = os.path.join(os.environ.get('MOJO_LOCAL_DIR'), 'cacert.pem')
        os.stat(cacert)
    except FileNotFoundError:
        cacert = None
    session = openstack_utils.get_overcloud_keystone_session(verify=cacert)
    glance_client = mojo_os_utils.get_glance_session_client(session)
    current_images = mojo_os_utils.get_images_list(glance_client)
    image_file = mojo_utils.get_mojo_file('images.yaml')
    image_config = generic_utils.get_yaml_config(image_file)
    cache_dir = '/tmp/img_cache'
    for image in image_config.keys():
        if image_config[image]['glance_name'] in current_images:
            logging.warning('Skipping %s it is already in'
                            'glance' % (image_config[image]['glance_name']))
            continue
        image_name = image_config[image]['url'].split('/')[-1]
        if os.path.exists(cache_dir + '/' + image_name):
            local_file = cache_dir + '/' + image_name
        else:
            local_file = mojo_os_utils.download_image(
                image_config[image]['url'])
        mojo_os_utils.upload_image(glance_client, local_file,
                                   image_config[image]['glance_name'],
                                   image_config[image]['is_public'],
                                   image_config[image]['disk_format'],
                                   image_config[image]['container_format'])
示例#9
0
def main():
    """Execute full test run."""
    args = parse_args(sys.argv[1:])

    cli_utils.setup_logging(log_level=args.loglevel.upper())

    if args.dev and args.smoke:
        raise ValueError('Ambiguous arguments: --smoke and '
                         '--dev cannot be used together')

    if args.dev and args.bundle:
        raise ValueError('Ambiguous arguments: --bundle and '
                         '--dev cannot be used together')

    if args.smoke and args.bundle:
        raise ValueError('Ambiguous arguments: --bundle and '
                         '--smoke cannot be used together')

    if args.force:
        logging.warn("Using the --force argument for 'juju deploy'. Note "
                     "that this disables juju checks for compatibility.")

    func_test_runner(keep_model=args.keep_model,
                     smoke=args.smoke,
                     dev=args.dev,
                     bundle=args.bundle,
                     force=args.force,
                     test_directory=args.test_directory)
    run_report.output_event_report()
    asyncio.get_event_loop().close()
示例#10
0
def main(argv):
    cli_utils.setup_logging()
    switch_map = {
        'neutron-gateway': 'local:{}/{}'.format(os.environ['MOJO_SERIES'],
                                                'neutron-gateway')
    }
    mojo_utils.upgrade_all_services(switch=switch_map)
示例#11
0
def setup():
    """Run setup for BGP networking.

    Configure the following:
        The overcloud network using subnet pools
        The overcloud BGP speaker
        The BGP peer
        Advertising of the FIPs via BGP
        Advertising of the project network(s) via BGP

    :returns: None
    :rtype: None
    """
    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()

    # Confugre the overcloud network
    network.setup_sdn(network_config, keystone_session=keystone_session)
    # Configure BGP
    bgp_speaker.setup_bgp_speaker(
        peer_application_name=DEFAULT_PEER_APPLICATION_NAME,
        keystone_session=keystone_session)
def main(argv):
    cli_utils.setup_logging()
    parser = argparse.ArgumentParser()
    parser.add_argument("services", nargs="*")
    options = parser.parse_args()
    services = cli_utils.parse_arg(options, 'services', multiargs=True)
    for service in services:
        mojo_utils.upgrade_service(service)
示例#13
0
def main(argv):
    cli_utils.setup_logging()
    parser = argparse.ArgumentParser()
    parser.add_argument("application", nargs="*")
    options = parser.parse_args()
    unit_args = cli_utils.parse_arg(options, 'application', multiargs=True)
    for application in unit_args:
        mojo_utils.delete_application(application)
示例#14
0
def main():
    """Deploy bundle."""
    args = parse_args(sys.argv[1:])
    cli_utils.setup_logging(log_level=args.loglevel.upper())
    if args.force:
        logging.warn("Using the --force argument for 'juju deploy'. Note "
                     "that this disables juju checks for compatibility.")
    deploy(args.bundle, args.model, wait=args.wait, force=args.force)
    run_report.output_event_report()
def main(argv):
    cli_utils.setup_logging()
    parser = argparse.ArgumentParser()
    parser.add_argument("units", nargs="*")
    options = parser.parse_args()
    unit_args = mojo_utils.parse_mojo_arg(options, 'units', multiargs=True)
    for unitreq in unit_args:
        service, count = unitreq.split(":")
        mojo_utils.add_unit(service, unit_num=count)
示例#16
0
 def test_setup_logging(self):
     _logger, _consolehandler, _logformatter = self.setup_logging_mocks()
     cli_utils.setup_logging()
     self.logging.Formatter.assert_called_with(
         datefmt='%Y-%m-%d %H:%M:%S',
         fmt='%(asctime)s [%(levelname)s] %(message)s')
     self.logging.getLogger.assert_called_with()
     _logger.setLevel.assert_called_with(20)
     _consolehandler.setFormatter.assert_called_with(_logformatter)
     _logger.addHandler.assert_called_with(_consolehandler)
示例#17
0
def main():
    """Run the tests defined by the command line args.

    Run the tests defined by the command line args or if none were provided
    read the tests from the charms tests.yaml config file
    """
    args = parse_args(sys.argv[1:])
    cli_utils.setup_logging(log_level=args.loglevel.upper())
    tests = args.tests or utils.get_charm_config()['tests']
    test(args.model_name, tests)
    run_report.output_event_report()
    asyncio.get_event_loop().close()
示例#18
0
def main():
    """Run the configuration defined by the command line args.

    Run the configuration defined by the command line args or if none were
    provided read the configuration functions  from the charms tests.yaml
    config file
    """
    args = parse_args(sys.argv[1:])
    cli_utils.setup_logging(log_level=args.loglevel.upper())
    funcs = args.configfuncs or utils.get_charm_config()['before_deploy']
    before_deploy(args.model_name, funcs)
    run_report.output_event_report()
    asyncio.get_event_loop().close()
def main(argv):
    cli_utils.setup_logging()
    # Setup client
    keystone_session = openstack_utils.get_overcloud_keystone_session()
    os_version = openstack_utils.get_current_os_versions(
        'keystone')['keystone']

    if os_version >= 'queens':
        designate_api_version = '2'
    else:
        designate_api_version = '1'
    client = mojo_os_utils.get_designate_session_client(
        keystone_session, client_version=designate_api_version)

    designate_api_version = 2
    zone = mojo_os_utils.create_or_return_zone(
        client,
        TEST_DOMAIN,
        TEST_DOMAIN_EMAIL)
    mojo_os_utils.create_or_return_recordset(
        client,
        zone['id'],
        'www',
        'A',
        [TEST_RECORD[TEST_WWW_RECORD]])

    # Test record is in bind and designate
    mojo_os_utils.check_dns_entry(
        client,
        TEST_RECORD[TEST_WWW_RECORD],
        TEST_DOMAIN,
        record_name=TEST_WWW_RECORD,
        designate_api=designate_api_version)

    mojo_utils.add_unit('designate-bind')

    mojo_os_utils.check_dns_entry(
        client,
        TEST_RECORD[TEST_WWW_RECORD],
        TEST_DOMAIN,
        record_name=TEST_WWW_RECORD,
        designate_api=designate_api_version)

    mojo_utils.delete_oldest('designate-bind')

    mojo_os_utils.check_dns_entry(
        client,
        TEST_RECORD[TEST_WWW_RECORD],
        TEST_DOMAIN,
        record_name=TEST_WWW_RECORD,
        designate_api=designate_api_version)
def main(argv):
    cli_utils.setup_logging()
    parser = argparse.ArgumentParser()
    parser.add_argument("--service")
    parser.add_argument("--resource")
    options = parser.parse_args()
    service = cli_utils.parse_arg(options, 'service')
    resource = cli_utils.parse_arg(options, 'resource')
    xenial = distro_info.UbuntuDistroInfo().all.index('xenial')
    series = os.environ.get('MOJO_SERIES')
    mojo_env = distro_info.UbuntuDistroInfo().all.index(series)
    if mojo_env >= xenial:
        resource = resource.replace('eth0', 'ens2')
    mojo_os_utils.delete_crm_leader(service, resource)
def main(argv):
    cli_utils.setup_logging()
    keystone_session = openstack_utils.get_overcloud_keystone_session()
    aodhc = mojo_os_utils.get_aodh_session_client(keystone_session)
    nova_client = openstack_utils.get_nova_session_client(keystone_session)

    servers = nova_client.servers.list()
    assert servers, "No servers available for AODH testing"
    if servers:
        alarm_name = 'mojo_instance_off'
        server = servers[0]
        assert server.status == 'ACTIVE', "Server {} not active".format(
            server.name)
        logging.info('Using server {} for aodh test'.format(server.name))
        server = nova_client.servers.find(name=server.name)
        logging.info('Deleting alarm {} if it exists'.format(alarm_name))
        mojo_os_utils.delete_alarm(aodhc, alarm_name, cache_wait=True)
        logging.info('Creating alarm {}'.format(alarm_name))
        alarm_def = {
            'type': 'event',
            'name': alarm_name,
            'description': 'Instance powered OFF',
            'alarm_actions': ['log://'],
            'ok_actions': ['log://'],
            'insufficient_data_actions': ['log://'],
            'event_rule': {
                'event_type':
                'compute.instance.power_off.*',
                'query': [{
                    'field': 'traits.instance_id',
                    'op': 'eq',
                    'type': 'string',
                    'value': server.id
                }]
            }
        }
        alarm_info = aodhc.alarm.create(alarm_def)
        logging.info('Stopping server {}'.format(server.name))
        server.stop()
        for i in range(10):
            alarm_state = mojo_os_utils.get_alarm_state(
                aodhc, alarm_info['alarm_id'])
            if alarm_state == 'alarm':
                logging.info('Alarm triggered')
                break
            else:
                time.sleep(5)
        else:
            raise Exception("Alarm failed to trigger")
def main(argv):
    cli_utils.setup_logging()
    logging.getLogger("urllib3").setLevel(logging.WARNING)
    keystone_session_uc = openstack_utils.get_undercloud_keystone_session()
    under_novac = openstack_utils.get_nova_session_client(keystone_session_uc)

    keystone_session_oc = openstack_utils.get_overcloud_keystone_session()
    clients = {
        'neutron':
        openstack_utils.get_neutron_session_client(keystone_session_oc),
        'nova': openstack_utils.get_nova_session_client(keystone_session_oc),
        'glance': mojo_os_utils.get_glance_session_client(keystone_session_oc),
    }
    image_file = mojo_utils.get_mojo_file('images.yaml')
    image_config = generic_utils.get_yaml_config(image_file)
    image_password = image_config['cirros']['password']
    # Look for existing Cirros guest
    server, ip = get_cirros_server(clients, image_password)
    router = (clients['neutron'].list_routers(
        name='provider-router')['routers'][0])
    l3_agents = clients['neutron'].list_l3_agent_hosting_routers(
        router=router['id'])['agents']
    logging.info('Checking there are multiple L3 agents running tenant router')
    if len(l3_agents) != 2:
        raise Exception('Unexpected number of l3 agents')
    for agent in l3_agents:
        gateway_hostname = agent['host']
        gateway_server = under_novac.servers.find(name=gateway_hostname)
        logging.info('Shutting down neutron gateway {} ({})'.format(
            gateway_hostname, gateway_server.id))
        gateway_server.stop()
        if not check_server_state(
                under_novac, 'SHUTOFF', server_name=gateway_hostname):
            raise Exception('Server failed to reach SHUTOFF state')
        logging.info('Neutron gateway %s has shutdown' % (gateway_hostname))
        logging.info('Checking connectivity to cirros guest')
        if not mojo_os_utils.wait_for_ping(ip, 90):
            raise Exception('Cirros guest not responding to ping')
        if not mojo_os_utils.ssh_test(
                'cirros', ip, server.name, password=image_password):
            raise Exception('Cirros guest issh connection failed')
        logging.info('Starting neutron gateway: ' + gateway_hostname)
        gateway_server.start()
        if not check_server_state(
                under_novac, 'ACTIVE', server_name=gateway_hostname):
            raise Exception('Server failed to reach SHUTOFF state')
        if not check_neutron_agent_states(clients['neutron'],
                                          gateway_hostname):
            raise Exception('Server agents failed to reach active state')
示例#23
0
 def test_setup_logging(self):
     self.patch_object(cli_utils, "logging")
     _logformatter = mock.MagicMock()
     _logger = mock.MagicMock()
     _consolehandler = mock.MagicMock()
     self.logging.Formatter.return_value = _logformatter
     self.logging.getLogger.return_value = _logger
     self.logging.StreamHandler.return_value = _consolehandler
     cli_utils.setup_logging()
     self.logging.Formatter.assert_called_with(
         datefmt='%Y-%m-%d %H:%M:%S',
         fmt='%(asctime)s [%(levelname)s] %(message)s')
     self.logging.getLogger.assert_called_with()
     _logger.setLevel.assert_called_with("INFO")
     _consolehandler.setFormatter.assert_called_with(_logformatter)
     _logger.addHandler.assert_called_with(_consolehandler)
示例#24
0
文件: test.py 项目: sahid/zaza
def run_from_cli():
    """Run test for BGP routes from CLI.

    :returns: None
    :rtype: None
    """
    cli_utils.setup_logging()
    parser = argparse.ArgumentParser()
    parser.add_argument("--peer-application",
                        "-a",
                        help="BGP Peer application name. Default: quagga",
                        default="quagga")
    options = parser.parse_args()

    peer_application_name = cli_utils.parse_arg(options, "peer_application")

    test_bgp_routes(peer_application_name)
def main(argv):
    cli_utils.setup_logging()
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "--target_release",
        default='auto', help="Openstack release name to upgrade to or 'auto' "
                             "to have script upgrade based on the lowest value"
                             "across all services")
    options = parser.parse_args()
    target_release = cli_utils.parse_arg(options, 'target_release')
    principle_services = mojo_utils.get_principle_applications()
    current_versions = openstack_utils.get_current_os_versions(
        principle_services)
    if target_release == 'auto':
        # If in auto mode find the lowest value openstack release across all
        # services and make sure all servcies are upgraded to one release
        # higher than the lowest
        lowest_release = mojo_os_utils.get_lowest_os_version(current_versions)
        target_release = mojo_os_utils.next_release(lowest_release)[1]
    # Get a list of services that need upgrading
    needs_upgrade = get_upgrade_targets(target_release, current_versions)
    for application in openstack_utils.UPGRADE_SERVICES:
        if application['name'] not in principle_services:
            continue
        if application['name'] not in needs_upgrade:
            logging.info('Not upgrading {} it is at {} or higher'.format(
                application['name'],
                target_release)
            )
            continue
        logging.info('Upgrading {} to {}'.format(application['name'],
                                                 target_release))
        # Update required relations
        update_relations(application['name'], target_release)
        ubuntu_version = mojo_utils.get_ubuntu_version(application['name'])
        config = {application['type']['origin_setting']:
                  "cloud:{}-{}/proposed"
                  .format(ubuntu_version, target_release)}
        model.set_application_config(application['name'], config)
        # NOTE: For liberty->mitaka upgrade ceilometer-agent gets stuck at
        # 'Services not running that should be: memcached' after nova-compute
        # upgrade, and test would wait forever. Therefore we upgrade
        # ceilometer-agent immediately after nova-compute.
        if application['name'] == 'nova-compute':
            model.set_application_config('ceilometer-agent', config)
        mojo_utils.juju_wait_finished()
示例#26
0
def keystone_federation_setup():
    """Configure Keystone Federation."""
    cli_utils.setup_logging()
    keystone_session = openstack_utils.get_overcloud_keystone_session()
    keystone_client = openstack_utils.get_keystone_session_client(
        keystone_session)

    try:
        domain = keystone_client.domains.find(name=FEDERATED_DOMAIN)
    except keystoneauth1.exceptions.http.NotFound:
        domain = keystone_client.domains.create(FEDERATED_DOMAIN,
                                                description="Federated Domain",
                                                enabled=True)

    try:
        group = keystone_client.groups.find(name=FEDERATED_GROUP,
                                            domain=domain)
    except keystoneauth1.exceptions.http.NotFound:
        group = keystone_client.groups.create(FEDERATED_GROUP,
                                              domain=domain,
                                              enabled=True)

    role = keystone_client.roles.find(name=MEMBER)
    keystone_client.roles.grant(role, group=group, domain=domain)

    try:
        idp = keystone_client.federation.identity_providers.find(
            name=IDP, domain_id=domain.id)
    except keystoneauth1.exceptions.http.NotFound:
        idp = keystone_client.federation.identity_providers.create(
            IDP, remote_ids=[REMOTE_ID], domain_id=domain.id, enabled=True)

    JSON_RULES = json.loads(MAP_TEMPLATE.format(domain_id=domain.id))

    try:
        keystone_client.federation.mappings.find(name=MAP_NAME)
    except keystoneauth1.exceptions.http.NotFound:
        keystone_client.federation.mappings.create(MAP_NAME, rules=JSON_RULES)

    try:
        keystone_client.federation.protocols.get(IDP, PROTOCOL_NAME)
    except keystoneauth1.exceptions.http.NotFound:
        keystone_client.federation.protocols.create(PROTOCOL_NAME,
                                                    mapping=MAP_NAME,
                                                    identity_provider=idp)
示例#27
0
def main():
    """Run the configuration defined by the command line args.

    Run the configuration defined by the command line args or if none were
    provided read the configuration functions  from the charms tests.yaml
    config file
    """
    args = parse_args(sys.argv[1:])
    cli_utils.setup_logging(log_level=args.loglevel.upper())
    for model_alias, model_name in args.model.items():
        if args.configfuncs:
            funcs = args.configfuncs
        else:
            config_steps = utils.get_config_steps()
            funcs = config_steps.get(model_alias, [])
        configure(model_name, funcs)
    run_report.output_event_report()
    asyncio.get_event_loop().close()
示例#28
0
def main():
    """Run the tests defined by the command line args.

    Run the tests defined by the command line args or if none were provided
    read the tests from the charms tests.yaml config file
    """
    args = parse_args(sys.argv[1:])
    cli_utils.setup_logging(log_level=args.loglevel.upper())
    zaza.model.set_juju_model_aliases(args.model)
    for model_alias, model_name in args.model.items():
        if args.tests:
            tests = args.tests
        else:
            test_steps = utils.get_test_steps()
            tests = test_steps.get(model_alias, [])
        test(model_name, tests)
    run_report.output_event_report()
    asyncio.get_event_loop().close()
示例#29
0
def main(argv):
    cli_utils.setup_logging()
    parser = argparse.ArgumentParser()
    parser.add_argument("router", nargs="?")
    options = parser.parse_args()
    router_name = cli_utils.parse_arg(options, 'router')
    try:
        cacert = os.path.join(os.environ.get('MOJO_LOCAL_DIR'), 'cacert.pem')
        os.stat(cacert)
    except FileNotFoundError:
        cacert = None
    keystone_session = openstack_utils.get_overcloud_keystone_session(
        verify=cacert)
    neutron_client = openstack_utils.get_neutron_session_client(
        keystone_session)
    router = neutron_client.list_routers(name=router_name)['routers'][0]['id']
    l3_agent = neutron_client.list_l3_agent_hosting_routers(router=router)
    hosting_machine = l3_agent['agents'][0]['host']
    mojo_utils.delete_machine(hosting_machine)
示例#30
0
def main(argv):
    cli_utils.setup_logging()
    parser = argparse.ArgumentParser()
    parser.add_argument("term_method", default='juju', nargs='?')
    skip_applications = ['neutron-gateway', 'mongodb',
                         'heat', 'rabbitmq-server']
    princ_applications = mojo_utils.get_principle_applications()
    applications = [item for item in princ_applications
                    if item not in skip_applications]
    for svc in applications:
        doomed_application = applications.pop(0)
        mojo_utils.delete_juju_leader(doomed_application)
        mojo_utils.juju_check_hooks_complete()
        mojo_utils.juju_wait_finished()
        check_cluster_status(doomed_application)
        mojo_utils.add_unit(doomed_application, unit_num=1)
        mojo_utils.juju_wait_finished()
        mojo_utils.juju_check_hooks_complete()
        check_crm_status(doomed_application)