diff options
Diffstat (limited to 'testcases/VIM/OpenStack')
4 files changed, 203 insertions, 160 deletions
diff --git a/testcases/VIM/OpenStack/CI/libraries/clean_openstack.py b/testcases/VIM/OpenStack/CI/libraries/clean_openstack.py index 8ea08b49..bff71f4e 100644 --- a/testcases/VIM/OpenStack/CI/libraries/clean_openstack.py +++ b/testcases/VIM/OpenStack/CI/libraries/clean_openstack.py @@ -23,7 +23,6 @@ import argparse import logging import os -import re import sys import time import yaml @@ -34,7 +33,7 @@ from keystoneclient.v2_0 import client as keystoneclient from cinderclient import client as cinderclient parser = argparse.ArgumentParser() -parser.add_argument("-d", "--debug", help="Debug mode", action="store_true") +parser.add_argument("-d", "--debug", help="Debug mode", action="store_true") args = parser.parse_args() @@ -48,14 +47,12 @@ if args.debug: else: ch.setLevel(logging.INFO) -formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') +formatter = logging.Formatter('% (asctime)s - % (name)s - ' + '% (levelname)s - % (message)s') ch.setFormatter(formatter) logger.addHandler(ch) -REPO_PATH=os.environ['repos_dir']+'/functest/' -if not os.path.exists(REPO_PATH): - logger.error("Functest repository directory not found '%s'" % REPO_PATH) - exit(-1) +REPO_PATH = os.environ['repos_dir'] + '/functest/' sys.path.append(REPO_PATH + "testcases/") import openstack_utils @@ -80,9 +77,11 @@ default_floatingips = defaults_yaml.get('floatingips') default_users = defaults_yaml.get('users') default_tenants = defaults_yaml.get('tenants') + def separator(): logger.info("-------------------------------------------") + def remove_instances(nova_client): logger.info("Removing Nova instances...") instances = openstack_utils.get_instances(nova_client) @@ -93,12 +92,13 @@ def remove_instances(nova_client): for instance in instances: instance_name = getattr(instance, 'name') instance_id = getattr(instance, 'id') - logger.debug("Removing instance '%s', ID=%s ..." % (instance_name,instance_id)) + logger.debug("Removing instance '%s', ID=%s ..." + % (instance_name, instance_id)) if openstack_utils.delete_instance(nova_client, instance_id): logger.debug(" > Done!") else: logger.error("There has been a problem removing the " - "instance %s..." % instance_id) + "instance %s..." % instance_id) timeout = 50 while timeout > 0: @@ -121,16 +121,18 @@ def remove_images(nova_client): for image in images: image_name = getattr(image, 'name') image_id = getattr(image, 'id') - logger.debug("'%s', ID=%s " %(image_name,image_id)) + logger.debug("'%s', ID=%s " % (image_name, image_id)) if image_id not in default_images: - logger.debug("Removing image '%s', ID=%s ..." % (image_name,image_id)) + logger.debug("Removing image '%s', ID=%s ..." + % (image_name, image_id)) if openstack_utils.delete_glance_image(nova_client, image_id): logger.debug(" > Done!") else: logger.error("There has been a problem removing the" - "image %s..." % image_id) + "image %s..." % image_id) else: - logger.debug(" > this is a default image and will NOT be deleted.") + logger.debug(" > this is a default image and will " + "NOT be deleted.") def remove_volumes(cinder_client): @@ -143,7 +145,7 @@ def remove_volumes(cinder_client): for volume in volumes: volume_id = getattr(volume, 'id') volume_name = getattr(volume, 'display_name') - logger.debug("'%s', ID=%s " %(volume_name,volume_id)) + logger.debug("'%s', ID=%s " % (volume_name, volume_id)) if volume_id not in default_volumes: logger.debug("Removing cinder volume %s ..." % volume_id) if openstack_utils.delete_volume(cinder_client, volume_id): @@ -151,14 +153,16 @@ def remove_volumes(cinder_client): else: logger.debug("Trying forced removal...") if openstack_utils.delete_volume(cinder_client, - volume_id, - forced=True): + volume_id, + forced=True): logger.debug(" > Done!") else: logger.error("There has been a problem removing the " - "volume %s..." % volume_id) + "volume %s..." % volume_id) else: - logger.debug(" > this is a default volume and will NOT be deleted.") + logger.debug(" > this is a default volume and will " + "NOT be deleted.") + def remove_floatingips(nova_client): logger.info("Removing floating IPs...") @@ -172,7 +176,7 @@ def remove_floatingips(nova_client): for fip in floatingips: fip_id = getattr(fip, 'id') fip_ip = getattr(fip, 'ip') - logger.debug("'%s', ID=%s " %(fip_ip,fip_id)) + logger.debug("'%s', ID=%s " % (fip_ip, fip_id)) if fip_id not in default_floatingips: logger.debug("Removing floating IP %s ..." % fip_id) if openstack_utils.delete_floating_ip(nova_client, fip_id): @@ -180,10 +184,10 @@ def remove_floatingips(nova_client): deleted += 1 else: logger.error("There has been a problem removing the " - "floating IP %s..." % fip_id) + "floating IP %s..." % fip_id) else: - logger.debug(" > this is a default floating IP and will NOT be deleted.") - + logger.debug(" > this is a default floating IP and will " + "NOT be deleted.") timeout = 50 while timeout > 0: @@ -200,45 +204,47 @@ def remove_networks(neutron_client): logger.info("Removing Neutron objects") network_ids = [] networks = openstack_utils.get_network_list(neutron_client) - if networks == None: + if networks is None: logger.debug("There are no networks in the deployment. ") else: logger.debug("Existing networks:") for network in networks: net_id = network['id'] net_name = network['name'] - logger.debug(" '%s', ID=%s " %(net_name,net_id)) + logger.debug(" '%s', ID=%s " % (net_name, net_id)) if net_id in default_networks: - logger.debug(" > this is a default network and will NOT be deleted.") - elif network['router:external'] == True: - logger.debug(" > this is an external network and will NOT be deleted.") + logger.debug(" > this is a default network and will " + "NOT be deleted.") + elif network['router:external'] is True: + logger.debug(" > this is an external network and will " + "NOT be deleted.") else: logger.debug(" > this network will be deleted.") network_ids.append(net_id) - #delete ports + # delete ports ports = openstack_utils.get_port_list(neutron_client) if ports is None: logger.debug("There are no ports in the deployment. ") else: remove_ports(neutron_client, ports, network_ids) - #remove routers + # remove routers routers = openstack_utils.get_router_list(neutron_client) if routers is None: logger.debug("There are no routers in the deployment. ") else: remove_routers(neutron_client, routers) - #remove networks - if network_ids != None: + # remove networks + if network_ids is not None: for net_id in network_ids: logger.debug("Removing network %s ..." % net_id) if openstack_utils.delete_neutron_net(neutron_client, net_id): logger.debug(" > Done!") else: logger.error("There has been a problem removing the " - "network %s..." % net_id) + "network %s..." % net_id) def remove_ports(neutron_client, ports, network_ids): @@ -248,28 +254,33 @@ def remove_ports(neutron_client, ports, network_ids): try: subnet_id = port['fixed_ips'][0]['subnet_id'] except: - logger.info(" > WARNING: Port %s does not contain 'fixed_ips'" % port_id) + logger.info(" > WARNING: Port %s does not contain 'fixed_ips'" + % port_id) print port router_id = port['device_id'] if len(port['fixed_ips']) == 0 and router_id == '': logger.debug("Removing port %s ..." % port_id) - if openstack_utils.delete_neutron_port(neutron_client, port_id): + if (openstack_utils.delete_neutron_port(neutron_client, + port_id)): logger.debug(" > Done!") else: logger.error("There has been a problem removing the " - "port %s ..." %port_id) + "port %s ..." % port_id) force_remove_port(neutron_client, port_id) elif port['device_owner'] == 'network:router_interface': logger.debug("Detaching port %s (subnet %s) from router %s ..." - % (port_id,subnet_id,router_id)) - if openstack_utils.remove_interface_router(neutron_client, - router_id, subnet_id): - time.sleep(5) # leave 5 seconds to detach before doing anything else + % (port_id, subnet_id, router_id)) + if openstack_utils.\ + remove_interface_router(neutron_client, + router_id, + subnet_id): + time.sleep(5) # leave 5 seconds to detach logger.debug(" > Done!") else: logger.error("There has been a problem removing the " - "interface %s from router %s..." %(subnet_id,router_id)) + "interface %s from router %s..." + % (subnet_id, router_id)) force_remove_port(neutron_client, port_id) else: force_remove_port(neutron_client, port_id) @@ -278,14 +289,14 @@ def remove_ports(neutron_client, ports, network_ids): def force_remove_port(neutron_client, port_id): logger.debug("Clearing device_owner for port %s ..." % port_id) openstack_utils.update_neutron_port(neutron_client, - port_id, - device_owner='clear') + port_id, + device_owner='clear') logger.debug("Removing port %s ..." % port_id) if openstack_utils.delete_neutron_port(neutron_client, port_id): logger.debug(" > Done!") else: - logger.error("There has been a problem removing " - "the port %s..." % port_id) + logger.error("There has been a problem removing the port %s..." + % port_id) def remove_routers(neutron_client, routers): @@ -293,22 +304,28 @@ def remove_routers(neutron_client, routers): router_id = router['id'] router_name = router['name'] if router_id not in default_routers: - logger.debug("Checking '%s' with ID=(%s) ..." % (router_name,router_id)) - if router['external_gateway_info'] != None: - logger.debug("Router has gateway to external network. Removing link...") - if openstack_utils.remove_gateway_router(neutron_client, router_id): + logger.debug("Checking '%s' with ID=(%s) ..." % (router_name, + router_id)) + if router['external_gateway_info'] is not None: + logger.debug("Router has gateway to external network." + "Removing link...") + if openstack_utils.remove_gateway_router(neutron_client, + router_id): logger.debug(" > Done!") else: logger.error("There has been a problem removing " - "the gateway...") + "the gateway...") else: - logger.debug("Router is not connected to anything. Ready to remove...") - logger.debug("Removing router %s(%s) ..." % (router_name, router_id)) - if openstack_utils.delete_neutron_router(neutron_client, router_id): + logger.debug("Router is not connected to anything." + "Ready to remove...") + logger.debug("Removing router %s(%s) ..." + % (router_name, router_id)) + if openstack_utils.delete_neutron_router(neutron_client, + router_id): logger.debug(" > Done!") else: logger.error("There has been a problem removing the " - "router '%s'(%s)..." % (router_name, router_id)) + "router '%s'(%s)..." % (router_name, router_id)) def remove_security_groups(neutron_client): @@ -321,14 +338,15 @@ def remove_security_groups(neutron_client): for secgroup in secgroups: secgroup_name = secgroup['name'] secgroup_id = secgroup['id'] - logger.debug("'%s', ID=%s " %(secgroup_name,secgroup_id)) + logger.debug("'%s', ID=%s " % (secgroup_name, secgroup_id)) if secgroup_id not in default_security_groups: logger.debug(" Removing '%s'..." % secgroup_name) - if openstack_utils.delete_security_group(neutron_client, secgroup_id): + if openstack_utils.delete_security_group(neutron_client, + secgroup_id): logger.debug(" > Done!") else: logger.error("There has been a problem removing the " - "security group %s..." % secgroup_id) + "security group %s..." % secgroup_id) else: logger.debug(" > this is a default security group and will NOT " "be deleted.") @@ -337,51 +355,52 @@ def remove_security_groups(neutron_client): def remove_users(keystone_client): logger.info("Removing Users...") users = openstack_utils.get_users(keystone_client) - if users == None: + if users is None: logger.debug("There are no users in the deployment. ") return for user in users: user_name = getattr(user, 'name') user_id = getattr(user, 'id') - logger.debug("'%s', ID=%s " %(user_name,user_id)) + logger.debug("'%s', ID=%s " % (user_name, user_id)) if user_id not in default_users: logger.debug(" Removing '%s'..." % user_name) - if openstack_utils.delete_user(keystone_client,user_id): + if openstack_utils.delete_user(keystone_client, user_id): logger.debug(" > Done!") else: logger.error("There has been a problem removing the " - "user '%s'(%s)..." % (user_name,user_id)) + "user '%s'(%s)..." % (user_name, user_id)) else: - logger.debug(" > this is a default user and will NOT be deleted.") + logger.debug(" > this is a default user and will " + "NOT be deleted.") def remove_tenants(keystone_client): logger.info("Removing Tenants...") tenants = openstack_utils.get_tenants(keystone_client) - if tenants == None: + if tenants is None: logger.debug("There are no tenants in the deployment. ") return for tenant in tenants: - tenant_name=getattr(tenant, 'name') + tenant_name = getattr(tenant, 'name') tenant_id = getattr(tenant, 'id') - logger.debug("'%s', ID=%s " %(tenant_name,tenant_id)) + logger.debug("'%s', ID=%s " % (tenant_name, tenant_id)) if tenant_id not in default_tenants: logger.debug(" Removing '%s'..." % tenant_name) - if openstack_utils.delete_tenant(keystone_client,tenant_id): + if openstack_utils.delete_tenant(keystone_client, tenant_id): logger.debug(" > Done!") else: logger.error("There has been a problem removing the " - "tenant '%s'(%s)..." % (tenant_name,tenant_id)) + "tenant '%s'(%s)..." % (tenant_name, tenant_id)) else: - logger.debug(" > this is a default tenant and will NOT be deleted.") - + logger.debug(" > this is a default tenant and will " + "NOT be deleted.") def main(): creds_nova = openstack_utils.get_credentials("nova") - nova_client = novaclient.Client('2',**creds_nova) + nova_client = novaclient.Client('2', **creds_nova) creds_neutron = openstack_utils.get_credentials("neutron") neutron_client = neutronclient.Client(**creds_neutron) @@ -390,15 +409,16 @@ def main(): keystone_client = keystoneclient.Client(**creds_keystone) creds_cinder = openstack_utils.get_credentials("cinder") - #cinder_client = cinderclient.Client(**creds_cinder) - cinder_client = cinderclient.Client('1',creds_cinder['username'], + # cinder_client = cinderclient.Client(**creds_cinder) + cinder_client = cinderclient.Client('1', creds_cinder['username'], creds_cinder['api_key'], creds_cinder['project_id'], creds_cinder['auth_url'], service_type="volume") if not openstack_utils.check_credentials(): - logger.error("Please source the openrc credentials and run the script again.") + logger.error("Please source the openrc credentials and run " + "the script again.") exit(-1) remove_instances(nova_client) diff --git a/testcases/VIM/OpenStack/CI/libraries/generate_defaults.py b/testcases/VIM/OpenStack/CI/libraries/generate_defaults.py index 731ed9e4..e67e4dee 100644 --- a/testcases/VIM/OpenStack/CI/libraries/generate_defaults.py +++ b/testcases/VIM/OpenStack/CI/libraries/generate_defaults.py @@ -23,9 +23,7 @@ import argparse import logging import os -import re import sys -import time import yaml from novaclient import client as novaclient @@ -34,7 +32,7 @@ from keystoneclient.v2_0 import client as keystoneclient from cinderclient import client as cinderclient parser = argparse.ArgumentParser() -parser.add_argument("-d", "--debug", help="Debug mode", action="store_true") +parser.add_argument("-d", "--debug", help="Debug mode", action="store_true") args = parser.parse_args() @@ -48,11 +46,12 @@ if args.debug: else: ch.setLevel(logging.INFO) -formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') +formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - ' + + '%(message)s') ch.setFormatter(formatter) logger.addHandler(ch) -REPO_PATH=os.environ['repos_dir']+'/functest/' +REPO_PATH = os.environ['repos_dir'] + '/functest/' if not os.path.exists(REPO_PATH): logger.error("Functest repository directory not found '%s'" % REPO_PATH) exit(-1) @@ -65,13 +64,15 @@ DEFAULTS_FILE = '/home/opnfv/functest/conf/os_defaults.yaml' def separator(): logger.info("-------------------------------------------") + def get_instances(nova_client): logger.debug("Getting instances...") dic_instances = {} instances = openstack_utils.get_instances(nova_client) if not (instances is None or len(instances) == 0): for instance in instances: - dic_instances.update({getattr(instance, 'id'):getattr(instance, 'name')}) + dic_instances.update({getattr(instance, 'id'): getattr(instance, + 'name')}) return {'instances': dic_instances} @@ -81,7 +82,7 @@ def get_images(nova_client): images = openstack_utils.get_images(nova_client) if not (images is None or len(images) == 0): for image in images: - dic_images.update({getattr(image, 'id'):getattr(image, 'name')}) + dic_images.update({getattr(image, 'id'): getattr(image, 'name')}) return {'images': dic_images} @@ -89,9 +90,9 @@ def get_volumes(cinder_client): logger.debug("Getting volumes...") dic_volumes = {} volumes = openstack_utils.get_volumes(cinder_client) - if volumes != None: + if volumes is not None: for volume in volumes: - dic_volumes.update({volume.id:volume.display_name}) + dic_volumes.update({volume.id: volume.display_name}) return {'volumes': dic_volumes} @@ -99,9 +100,9 @@ def get_networks(neutron_client): logger.debug("Getting networks") dic_networks = {} networks = openstack_utils.get_network_list(neutron_client) - if networks != None: + if networks is not None: for network in networks: - dic_networks.update({network['id']:network['name']}) + dic_networks.update({network['id']: network['name']}) return {'networks': dic_networks} @@ -109,9 +110,9 @@ def get_routers(neutron_client): logger.debug("Getting routers") dic_routers = {} routers = openstack_utils.get_router_list(neutron_client) - if routers != None: + if routers is not None: for router in routers: - dic_routers.update({router['id']:router['name']}) + dic_routers.update({router['id']: router['name']}) return {'routers': dic_routers} @@ -121,7 +122,7 @@ def get_security_groups(neutron_client): secgroups = openstack_utils.get_security_groups(neutron_client) if not (secgroups is None or len(secgroups) == 0): for secgroup in secgroups: - dic_secgroups.update({secgroup['id']:secgroup['name']}) + dic_secgroups.update({secgroup['id']: secgroup['name']}) return {'secgroups': dic_secgroups} @@ -131,7 +132,7 @@ def get_floatinips(nova_client): floatingips = openstack_utils.get_floating_ips(nova_client) if not (floatingips is None or len(floatingips) == 0): for floatingip in floatingips: - dic_floatingips.update({floatingip.id:floatingip.ip}) + dic_floatingips.update({floatingip.id: floatingip.ip}) return {'floatingips': dic_floatingips} @@ -141,7 +142,7 @@ def get_users(keystone_client): users = openstack_utils.get_users(keystone_client) if not (users is None or len(users) == 0): for user in users: - dic_users.update({getattr(user, 'id'):getattr(user, 'name')}) + dic_users.update({getattr(user, 'id'): getattr(user, 'name')}) return {'users': dic_users} @@ -151,13 +152,14 @@ def get_tenants(keystone_client): tenants = openstack_utils.get_tenants(keystone_client) if not (tenants is None or len(tenants) == 0): for tenant in tenants: - dic_tenants.update({getattr(tenant, 'id'):getattr(tenant, 'name')}) + dic_tenants.update({getattr(tenant, 'id'): + getattr(tenant, 'name')}) return {'tenants': dic_tenants} def main(): creds_nova = openstack_utils.get_credentials("nova") - nova_client = novaclient.Client('2',**creds_nova) + nova_client = novaclient.Client('2', **creds_nova) creds_neutron = openstack_utils.get_credentials("neutron") neutron_client = neutronclient.Client(**creds_neutron) @@ -166,14 +168,15 @@ def main(): keystone_client = keystoneclient.Client(**creds_keystone) creds_cinder = openstack_utils.get_credentials("cinder") - cinder_client = cinderclient.Client('1',creds_cinder['username'], + cinder_client = cinderclient.Client('1', creds_cinder['username'], creds_cinder['api_key'], creds_cinder['project_id'], creds_cinder['auth_url'], service_type="volume") if not openstack_utils.check_credentials(): - logger.error("Please source the openrc credentials and run the script again.") + logger.error("Please source the openrc credentials and run the" + + "script again.") exit(-1) defaults = {} @@ -192,7 +195,7 @@ def main(): yaml_file.seek(0) logger.info("Openstack Defaults found in the deployment:") print yaml_file.read() - logger.debug("NOTE: These objects will NOT be deleted after "+\ + logger.debug("NOTE: These objects will NOT be deleted after " + "running the tests.") exit(0) diff --git a/testcases/VIM/OpenStack/CI/libraries/run_rally-cert.py b/testcases/VIM/OpenStack/CI/libraries/run_rally-cert.py index 0ef7b4ed..3ac3d449 100755 --- a/testcases/VIM/OpenStack/CI/libraries/run_rally-cert.py +++ b/testcases/VIM/OpenStack/CI/libraries/run_rally-cert.py @@ -45,7 +45,7 @@ parser.add_argument("test_name", "performs all possible test scenarios" .format(d=tests)) -parser.add_argument("-d", "--debug", help="Debug mode", action="store_true") +parser.add_argument("-d", "--debug", help="Debug mode", action="store_true") parser.add_argument("-r", "--report", help="Create json result file", action="store_true") @@ -83,7 +83,7 @@ formatter = logging.Formatter("%(asctime)s - %(name)s - " ch.setFormatter(formatter) logger.addHandler(ch) -REPO_PATH = os.environ['repos_dir']+'/functest/' +REPO_PATH = os.environ['repos_dir'] + '/functest/' if not os.path.exists(REPO_PATH): logger.error("Functest repository directory not found '%s'" % REPO_PATH) exit(-1) @@ -95,12 +95,12 @@ with open("/home/opnfv/functest/conf/config_functest.yaml") as f: functest_yaml = yaml.safe_load(f) f.close() -HOME = os.environ['HOME']+"/" +HOME = os.environ['HOME'] + "/" SCENARIOS_DIR = REPO_PATH + functest_yaml.get("general"). \ get("directories").get("dir_rally_scn") TEMPLATE_DIR = SCENARIOS_DIR + "scenario/templates" SUPPORT_DIR = SCENARIOS_DIR + "scenario/support" -###todo: + FLAVOR_NAME = "m1.tiny" USERS_AMOUNT = 2 TENANTS_AMOUNT = 3 @@ -215,7 +215,7 @@ def build_task_args(test_file_name): task_args['floating_network'] = '' net_id = openstack_utils.get_network_id(client_dict['neutron'], - PRIVATE_NETWORK) + PRIVATE_NETWORK) task_args['netid'] = str(net_id) task_args['live_migration'] = live_migration_supported() @@ -270,7 +270,7 @@ def get_output(proc, test_name): except ValueError: logger.info('Duration error: %s, %s' % (duration, line)) - overall_duration="{:10.2f}".format(overall_duration) + overall_duration = "{:10.2f}".format(overall_duration) if nb_totals == 0: success_avg = 0 else: @@ -378,8 +378,9 @@ def main(): neutron_client = neutronclient.Client(**creds_neutron) creds_keystone = openstack_utils.get_credentials("keystone") keystone_client = keystoneclient.Client(**creds_keystone) - glance_endpoint = keystone_client.service_catalog.url_for(service_type='image', - endpoint_type='publicURL') + glance_endpoint = keystone_client.\ + service_catalog.url_for(service_type='image', + endpoint_type='publicURL') glance_client = glanceclient.Client(1, glance_endpoint, token=keystone_client.auth_token) creds_cinder = openstack_utils.get_credentials("cinder") @@ -392,15 +393,15 @@ def main(): client_dict['neutron'] = neutron_client volume_types = openstack_utils.list_volume_types(cinder_client, - private=False) + private=False) if not volume_types: - volume_type = openstack_utils.create_volume_type(cinder_client, - CINDER_VOLUME_TYPE_NAME) + volume_type = openstack_utils.\ + create_volume_type(cinder_client, CINDER_VOLUME_TYPE_NAME) if not volume_type: logger.error("Failed to create volume type...") exit(-1) else: - logger.debug("Volume type '%s' created succesfully..." \ + logger.debug("Volume type '%s' created succesfully..." % CINDER_VOLUME_TYPE_NAME) else: logger.debug("Using existing volume type(s)...") @@ -412,16 +413,16 @@ def main(): logger.debug("Creating image '%s' from '%s'..." % (GLANCE_IMAGE_NAME, GLANCE_IMAGE_PATH)) image_id = openstack_utils.create_glance_image(glance_client, - GLANCE_IMAGE_NAME, - GLANCE_IMAGE_PATH) + GLANCE_IMAGE_NAME, + GLANCE_IMAGE_PATH) if not image_id: logger.error("Failed to create the Glance image...") exit(-1) else: - logger.debug("Image '%s' with ID '%s' created succesfully ." \ + logger.debug("Image '%s' with ID '%s' created succesfully ." % (GLANCE_IMAGE_NAME, image_id)) else: - logger.debug("Using existing image '%s' with ID '%s'..." \ + logger.debug("Using existing image '%s' with ID '%s'..." % (GLANCE_IMAGE_NAME, image_id)) image_exists = True @@ -435,14 +436,19 @@ def main(): run_task(args.test_name) report = "\n"\ - " \n"\ + " "\ + "\n"\ " Rally Summary Report\n"\ - "+===================+============+===============+===========+\n"\ - "| Module | Duration | nb. Test Run | Success |\n"\ - "+===================+============+===============+===========+\n" + "\n"\ + "+===================+============+===============+===========+"\ + "\n"\ + "| Module | Duration | nb. Test Run | Success |"\ + "\n"\ + "+===================+============+===============+===========+"\ + "\n" payload = [] - #for each scenario we draw a row for the table + # for each scenario we draw a row for the table total_duration = 0.0 total_nb_tests = 0 total_success = 0.0 @@ -454,11 +460,12 @@ def main(): duration = "{0:<10}".format(duration) nb_tests = "{0:<13}".format(s['nb_tests']) total_nb_tests += int(s['nb_tests']) - success = "{0:<10}".format(str(s['success'])+'%') + success = "{0:<10}".format(str(s['success']) + '%') total_success += float(s['success']) - report += ""\ - "| " + name + " | " + duration + " | " + nb_tests + " | " + success + "|\n"\ - "+-------------------+------------+---------------+-----------+\n" + report += "" + \ + "| " + name + " | " + duration + " | " + \ + nb_tests + " | " + success + "|\n" + \ + "+-------------------+------------+---------------+-----------+\n" payload.append({'module': name, 'details': {'duration': s['overall_duration'], 'nb tests': s['nb_tests'], @@ -468,21 +475,24 @@ def main(): total_duration_str2 = "{0:<10}".format(total_duration_str) total_nb_tests_str = "{0:<13}".format(total_nb_tests) total_success = "{:0.2f}".format(total_success / len(SUMMARY)) - total_success_str = "{0:<10}".format(str(total_success)+'%') - report += "+===================+============+===============+===========+\n" + total_success_str = "{0:<10}".format(str(total_success) + '%') + report += "+===================+============+===============+===========+" + report += "\n" report += "| TOTAL: | " + total_duration_str2 + " | " + \ - total_nb_tests_str + " | " + total_success_str + "|\n" - report += "+===================+============+===============+===========+\n" + total_nb_tests_str + " | " + total_success_str + "|\n" + report += "+===================+============+===============+===========+" + report += "\n" - logger.info("\n"+report) + logger.info("\n" + report) payload.append({'summary': {'duration': total_duration, - 'nb tests': total_nb_tests, - 'nb success': total_success}}) + 'nb tests': total_nb_tests, + 'nb success': total_success}}) # Generate json results for DB - #json_results = {"timestart": time_start, "duration": total_duration, - # "tests": int(total_nb_tests), "success": int(total_success)} - #logger.info("Results: "+str(json_results)) + # json_results = {"timestart": time_start, "duration": total_duration, + # "tests": int(total_nb_tests), + # "success": int(total_success)} + # logger.info("Results: "+str(json_results)) # Evaluation of the success criteria status = "failed" @@ -498,13 +508,13 @@ def main(): exit(0) if not image_exists: - logger.debug("Deleting image '%s' with ID '%s'..." \ + logger.debug("Deleting image '%s' with ID '%s'..." % (GLANCE_IMAGE_NAME, image_id)) if not openstack_utils.delete_glance_image(nova_client, image_id): logger.error("Error deleting the glance image") if not volume_types: - logger.debug("Deleting volume type '%s'..." \ + logger.debug("Deleting volume type '%s'..." % CINDER_VOLUME_TYPE_NAME) if not openstack_utils.delete_volume_type(cinder_client, volume_type): logger.error("Error in deleting volume type...") diff --git a/testcases/VIM/OpenStack/CI/libraries/run_tempest.py b/testcases/VIM/OpenStack/CI/libraries/run_tempest.py index 4ff31176..951210ce 100644 --- a/testcases/VIM/OpenStack/CI/libraries/run_tempest.py +++ b/testcases/VIM/OpenStack/CI/libraries/run_tempest.py @@ -61,14 +61,12 @@ if args.debug: else: ch.setLevel(logging.INFO) -formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') +formatter = logging.Formatter('%(asctime)s - %(name)s - ' + '%(levelname)s - %(message)s') ch.setFormatter(formatter) logger.addHandler(ch) -REPO_PATH = os.environ['repos_dir']+'/functest/' -if not os.path.exists(REPO_PATH): - logger.error("Functest repository directory not found '%s'" % REPO_PATH) - exit(-1) +REPO_PATH = os.environ['repos_dir'] + '/functest/' sys.path.append(REPO_PATH + "testcases/") import functest_utils import openstack_utils @@ -79,16 +77,25 @@ f.close() TEST_DB = functest_yaml.get("results").get("test_db_url") MODE = "smoke" -TENANT_NAME = functest_yaml.get("tempest").get("identity").get("tenant_name") -TENANT_DESCRIPTION = functest_yaml.get("tempest").get("identity").get("tenant_description") -USER_NAME = functest_yaml.get("tempest").get("identity").get("user_name") -USER_PASSWORD = functest_yaml.get("tempest").get("identity").get("user_password") -SSH_USER_REGEX = functest_yaml.get("tempest").get("input-scenario").get("ssh_user_regex") -DEPLOYMENT_MAME = functest_yaml.get("rally").get("deployment_name") -RALLY_INSTALLATION_DIR = functest_yaml.get("general").get("directories").get("dir_rally_inst") -RESULTS_DIR = functest_yaml.get("general").get("directories").get("dir_results") +TENANT_NAME = functest_yaml.get("tempest").\ + get("identity").get("tenant_name") +TENANT_DESCRIPTION = functest_yaml.get("tempest").\ + get("identity").get("tenant_description") +USER_NAME = functest_yaml.get("tempest").\ + get("identity").get("user_name") +USER_PASSWORD = functest_yaml.get("tempest").\ + get("identity").get("user_password") +SSH_USER_REGEX = functest_yaml.get("tempest").\ + get("input-scenario").get("ssh_user_regex") +DEPLOYMENT_MAME = functest_yaml.get("rally").\ + get("deployment_name") +RALLY_INSTALLATION_DIR = functest_yaml.get("general").\ + get("directories").get("dir_rally_inst") +RESULTS_DIR = functest_yaml.get("general").\ + get("directories").get("dir_results") TEMPEST_RESULTS_DIR = RESULTS_DIR + '/tempest' -TEST_LIST_DIR = functest_yaml.get("general").get("directories").get("dir_tempest_cases") +TEST_LIST_DIR = functest_yaml.get("general").\ + get("directories").get("dir_tempest_cases") TEMPEST_LIST_FILE = REPO_PATH + TEST_LIST_DIR + 'test_list.txt' TEMPEST_DEFCORE = REPO_PATH + TEST_LIST_DIR + 'defcore_req.txt' @@ -111,10 +118,8 @@ def get_info(file_result): if (len(test_failed) < 1): test_failed = re.findall(regexp, line) - retval = p.wait() - - logger.debug("test_run:"+test_run) - logger.debug("duration:"+duration) + logger.debug("test_run:" + test_run) + logger.debug("duration:" + duration) def push_results_to_db(case, payload, criteria): @@ -183,7 +188,7 @@ def configure_tempest(mode): functest_utils.execute_command(cmd, logger) logger.debug("Resolving deployment UUID and directory...") - cmd = "rally deployment list | awk '/"+DEPLOYMENT_MAME+"/ {print $2}'" + cmd = "rally deployment list | awk '/" + DEPLOYMENT_MAME + "/ {print $2}'" p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) @@ -191,12 +196,14 @@ def configure_tempest(mode): if deployment_uuid == "": logger.debug(" Rally deployment NOT found") return False - deployment_dir = RALLY_INSTALLATION_DIR + "/tempest/for-deployment-" + deployment_uuid + deployment_dir = RALLY_INSTALLATION_DIR + "/tempest/for-deployment-" + \ + deployment_uuid logger.debug("Finding tempest.conf file...") tempest_conf_file = deployment_dir + "/tempest.conf" if not os.path.isfile(tempest_conf_file): - logger.error(" Tempest configuration file %s NOT found." % tempest_conf_file) + logger.error(" Tempest configuration file %s NOT found." + % tempest_conf_file) return False logger.debug("Generating test case list...") @@ -217,8 +224,9 @@ def configure_tempest(mode): logger.error("No shared private networks found.") else: private_net_name = private_net['name'] - cmd = "crudini --set "+tempest_conf_file+" compute fixed_network_name " \ - + private_net_name + cmd = "crudini --set " + tempest_conf_file + \ + " compute fixed_network_name " + \ + private_net_name functest_utils.execute_command(cmd, logger) logger.debug(" Updating non-admin credentials...") @@ -231,7 +239,8 @@ def configure_tempest(mode): cmd = "crudini --set " + tempest_conf_file + " identity password " \ + USER_PASSWORD functest_utils.execute_command(cmd, logger) - cmd = "sed -i 's/.*ssh_user_regex.*/ssh_user_regex = " + SSH_USER_REGEX + "/' " + tempest_conf_file + cmd = "sed -i 's/.*ssh_user_regex.*/ssh_user_regex = " + SSH_USER_REGEX + \ + "/' " + tempest_conf_file functest_utils.execute_command(cmd, logger) # Copy tempest.conf to /home/opnfv/functest/results/tempest/ @@ -260,9 +269,9 @@ def run_tempest(OPTION): os.getenv('NODE_NAME', 'Unknown'), time.strftime("%a %b %d %H:%M:%S %Z %Y")) - f_stdout = open(TEMPEST_RESULTS_DIR+"/tempest.log", 'w+') - f_stderr = open(TEMPEST_RESULTS_DIR+"/tempest-error.log", 'w+') - f_env = open(TEMPEST_RESULTS_DIR+"/environment.log", 'w+') + f_stdout = open(TEMPEST_RESULTS_DIR + "/tempest.log", 'w+') + f_stderr = open(TEMPEST_RESULTS_DIR + "/tempest-error.log", 'w+') + f_env = open(TEMPEST_RESULTS_DIR + "/environment.log", 'w+') f_env.write(header) subprocess.call(cmd_line, shell=True, stdout=f_stdout, stderr=f_stderr) @@ -294,12 +303,12 @@ def run_tempest(OPTION): # Generate json results for DB json_results = {"timestart": time_start, "duration": dur_sec_int, "tests": int(num_tests), "failures": int(num_failures)} - logger.info("Results: "+str(json_results)) + logger.info("Results: " + str(json_results)) status = "failed" try: diff = (int(num_tests) - int(num_failures)) - success_rate = 100*diff/int(num_tests) + success_rate = 100 * diff / int(num_tests) except: success_rate = 0 @@ -317,7 +326,8 @@ def main(): global MODE if not (args.mode in modes): - logger.error("Tempest mode not valid. Possible values are:\n" + str(modes)) + logger.error("Tempest mode not valid. " + "Possible values are:\n" + str(modes)) exit(-1) if args.mode == 'custom' or args.mode == 'smoke' or args.mode == 'full': |