Place config_functest.yaml outside the functest repo
[functest.git] / testcases / VIM / OpenStack / CI / libraries / run_rally.py
index 327fe9c..ba74a72 100644 (file)
@@ -23,12 +23,13 @@ import yaml
 import requests
 import sys
 import novaclient.v2.client as novaclient
+from keystoneclient.v2_0 import client as keystoneclient
+from glanceclient import client as glanceclient
 
 """ tests configuration """
 tests = ['authenticate', 'glance', 'cinder', 'ceilometer', 'heat', 'keystone',
          'neutron', 'nova', 'quotas', 'requests', 'vm', 'all']
 parser = argparse.ArgumentParser()
-parser.add_argument("repo_path", help="Path to the repository")
 parser.add_argument("test_name",
                     help="Module name to be tested"
                          "Possible values are : "
@@ -45,8 +46,7 @@ parser.add_argument("-r", "--report",
 
 args = parser.parse_args()
 
-sys.path.append(args.repo_path + "testcases/")
-import functest_utils
+
 
 """ logging configuration """
 logger = logging.getLogger("run_rally")
@@ -63,16 +63,22 @@ formatter = logging.Formatter("%(asctime)s - %(name)s - "
 ch.setFormatter(formatter)
 logger.addHandler(ch)
 
-with open(args.repo_path+"testcases/config_functest.yaml") as f:
+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)
+sys.path.append(REPO_PATH + "testcases/")
+import functest_utils
+
+with open("/home/opnfv/functest/conf/config_functest.yaml") as f:
     functest_yaml = yaml.safe_load(f)
 f.close()
 
 HOME = os.environ['HOME']+"/"
-REPO_PATH = args.repo_path
 SCENARIOS_DIR = REPO_PATH + functest_yaml.get("general"). \
     get("directories").get("dir_rally_scn")
 RESULTS_DIR = functest_yaml.get("general").get("directories"). \
-    get("dir_rally_res") + "/rally/"
+    get("dir_rally_res")
 TEST_DB = functest_yaml.get("results").get("test_db_url")
 
 GLANCE_IMAGE_NAME = "functest-img-rally"
@@ -88,7 +94,7 @@ def push_results_to_db(payload):
 
     url = TEST_DB + "/results"
     installer = functest_utils.get_installer_type(logger)
-    git_version = functest_utils.get_git_branch(args.repo_path)
+    git_version = functest_utils.get_git_branch(REPO_PATH)
     pod_name = functest_utils.get_pod_name(logger)
     # TODO pod_name hardcoded, info shall come from Jenkins
     params = {"project_name": "functest", "case_name": "Rally",
@@ -216,20 +222,6 @@ def run_task(test_name):
                      .format(test_name))
 
 
-def delete_glance_image(name):
-    cmd = ("glance image-delete $(glance image-list | grep %s "
-           "| awk '{print $2}' | head -1)" % name)
-    functest_utils.execute_command(cmd, logger)
-    return True
-
-
-def cleanup(nova):
-    logger.info("Cleaning up...")
-    logger.debug("Deleting image...")
-    delete_glance_image(GLANCE_IMAGE_NAME)
-    return True
-
-
 def main():
     # configure script
     if not (args.test_name in tests):
@@ -238,10 +230,19 @@ def main():
 
     creds_nova = functest_utils.get_credentials("nova")
     nova_client = novaclient.Client(**creds_nova)
+    creds_keystone = functest_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_client = glanceclient.Client(1, glance_endpoint,
+                                        token=keystone_client.auth_token)
 
     logger.debug("Creating image '%s' from '%s'..." % (GLANCE_IMAGE_NAME, GLANCE_IMAGE_PATH))
-    create_glance_image(GLANCE_IMAGE_PATH, GLANCE_IMAGE_NAME, GLANCE_IMAGE_FORMAT)
-
+    image_id = functest_utils.create_glance_image(glance_client,
+                                            GLANCE_IMAGE_NAME,GLANCE_IMAGE_PATH)
+    if not image_id:
+        logger.error("Failed to create a Glance image...")
+        exit(-1)
     # Check if the given image exists
     try:
         nova_client.images.find(name=GLANCE_IMAGE_NAME)
@@ -264,7 +265,8 @@ def main():
         print(args.test_name)
         run_task(args.test_name)
 
-    cleanup(nova_client)
+    if not functest_utils.delete_glance_image(nova_client, image_id):
+        logger.error("Error deleting the glance image")
 
 if __name__ == '__main__':
     main()