Merge "Fix image format set for rally test cases"
[functest.git] / ci / prepare_env.py
old mode 100644 (file)
new mode 100755 (executable)
index 4f29260..49dcdd5
 #
 
 
-import argparse
+import json
 import os
 import re
 import subprocess
 import sys
 
+import argparse
 import functest.utils.functest_logger as ft_logger
 import functest.utils.functest_utils as ft_utils
 import functest.utils.openstack_utils as os_utils
 import yaml
-
+from functest.utils.functest_utils import FUNCTEST_REPO as FUNCTEST_REPO
 
 actions = ['start', 'check']
 parser = argparse.ArgumentParser()
@@ -43,11 +44,14 @@ CI_INSTALLER_TYPE = ""
 CI_INSTALLER_IP = ""
 CI_SCENARIO = ""
 CI_DEBUG = False
-REPOS_DIR = os.getenv('repos_dir')
-FUNCTEST_REPO = REPOS_DIR + '/functest/'
+CONFIG_FUNCTEST_PATH = os.environ["CONFIG_FUNCTEST_YAML"]
+CONFIG_PATCH_PATH = os.path.join(os.path.dirname(
+    CONFIG_FUNCTEST_PATH), "config_patch.yaml")
 
-with open(os.environ["CONFIG_FUNCTEST_YAML"]) as f:
-    functest_yaml = yaml.safe_load(f)
+functest_yaml = ft_utils.get_functest_yaml()
+
+with open(CONFIG_PATCH_PATH) as f:
+    functest_patch_yaml = yaml.safe_load(f)
 
 FUNCTEST_CONF_DIR = functest_yaml.get("general").get(
     "directories").get("dir_functest_conf")
@@ -133,13 +137,6 @@ def create_directories():
     else:
         logger.debug("   %s already exists." % FUNCTEST_DATA_DIR)
 
-    ODL_RESULTS_DIR = FUNCTEST_RESULTS_DIR + "/ODL/"
-    if not os.path.exists(ODL_RESULTS_DIR):
-        os.makedirs(ODL_RESULTS_DIR)
-        logger.info("    %s created." % ODL_RESULTS_DIR)
-    else:
-        logger.debug("   %s already exists." % ODL_RESULTS_DIR)
-
 
 def source_rc_file():
     print_separator()
@@ -189,6 +186,21 @@ def source_rc_file():
     logger.debug("Used credentials: %s" % str)
 
 
+def patch_config_file():
+    updated = False
+    for key in functest_patch_yaml:
+        if key in CI_SCENARIO:
+            new_functest_yaml = dict(ft_utils.merge_dicts(
+                functest_yaml, functest_patch_yaml[key]))
+            updated = True
+
+    if updated:
+        os.remove(CONFIG_FUNCTEST_PATH)
+        with open(CONFIG_FUNCTEST_PATH, "w") as f:
+            f.write(yaml.dump(new_functest_yaml, default_style='"'))
+        f.close()
+
+
 def verify_deployment():
     print_separator()
     logger.info("Verifying OpenStack services...")
@@ -210,32 +222,35 @@ def install_rally():
     logger.info("Creating Rally environment...")
 
     cmd = "rally deployment destroy opnfv-rally"
-    ft_utils.execute_command(cmd, logger=logger, exit_on_error=False,
+    ft_utils.execute_command(cmd, exit_on_error=False,
                              error_msg=("Deployment %s does not exist."
                                         % DEPLOYMENT_MAME), verbose=False)
-
-    cmd = "rally deployment create --fromenv --name=" + DEPLOYMENT_MAME
-    ft_utils.execute_command(cmd, logger,
+    rally_conf = os_utils.get_credentials_for_rally()
+    with open('rally_conf.json', 'w') as fp:
+        json.dump(rally_conf, fp)
+    cmd = "rally deployment create --file=rally_conf.json --name="
+    cmd += DEPLOYMENT_MAME
+    ft_utils.execute_command(cmd,
                              error_msg="Problem creating Rally deployment")
 
     logger.info("Installing tempest from existing repo...")
     cmd = ("rally verify install --source " + TEMPEST_REPO_DIR +
            " --system-wide")
-    ft_utils.execute_command(cmd, logger,
+    ft_utils.execute_command(cmd,
                              error_msg="Problem installing Tempest.")
 
     cmd = "rally deployment check"
-    ft_utils.execute_command(cmd, logger,
+    ft_utils.execute_command(cmd,
                              error_msg=("OpenStack not responding or "
                                         "faulty Rally deployment."))
 
     cmd = "rally show images"
-    ft_utils.execute_command(cmd, logger,
+    ft_utils.execute_command(cmd,
                              error_msg=("Problem while listing "
                                         "OpenStack images."))
 
     cmd = "rally show flavors"
-    ft_utils.execute_command(cmd, logger,
+    ft_utils.execute_command(cmd,
                              error_msg=("Problem while showing "
                                         "OpenStack flavors."))
 
@@ -265,6 +280,7 @@ def main():
         check_env_variables()
         create_directories()
         source_rc_file()
+        patch_config_file()
         verify_deployment()
         install_rally()