aboutsummaryrefslogtreecommitdiffstats
path: root/testcases/VIM/OpenStack
diff options
context:
space:
mode:
Diffstat (limited to 'testcases/VIM/OpenStack')
-rw-r--r--testcases/VIM/OpenStack/CI/libraries/clean_openstack.py164
-rw-r--r--testcases/VIM/OpenStack/CI/libraries/generate_defaults.py45
-rwxr-xr-xtestcases/VIM/OpenStack/CI/libraries/run_rally-cert.py84
-rw-r--r--testcases/VIM/OpenStack/CI/libraries/run_tempest.py70
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':