#
-import argparse
+import json
import os
import re
import subprocess
import sys
+import argparse
+import yaml
+
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
-
actions = ['start', 'check']
parser = argparse.ArgumentParser()
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(CONFIG_PATCH_PATH) as f:
+ functest_patch_yaml = yaml.safe_load(f)
-with open(os.environ["CONFIG_FUNCTEST_YAML"]) as f:
- functest_yaml = yaml.safe_load(f)
+FUNCTEST_CONF_DIR = \
+ ft_utils.get_functest_config('general.directories.dir_functest_conf')
-FUNCTEST_CONF_DIR = functest_yaml.get("general").get(
- "directories").get("dir_functest_conf")
-FUNCTEST_DATA_DIR = functest_yaml.get("general").get(
- "directories").get("dir_functest_data")
-FUNCTEST_RESULTS_DIR = functest_yaml.get("general").get(
- "directories").get("dir_results")
-DEPLOYMENT_MAME = functest_yaml.get("rally").get("deployment_name")
-TEMPEST_REPO_DIR = functest_yaml.get("general").get(
- "directories").get("dir_repo_tempest")
+FUNCTEST_DATA_DIR = \
+ ft_utils.get_functest_config('general.directories.dir_functest_data')
+FUNCTEST_RESULTS_DIR = \
+ ft_utils.get_functest_config('general.directories.dir_results')
+DEPLOYMENT_MAME = \
+ ft_utils.get_functest_config('rally.deployment_name')
+TEMPEST_REPO_DIR = \
+ ft_utils.get_functest_config('general.directories.dir_repo_tempest')
ENV_FILE = FUNCTEST_CONF_DIR + "/env_active"
logger.warning("The env variable 'INSTALLER_TYPE' is not defined.")
CI_INSTALLER_TYPE = "undefined"
else:
- if os.getenv('INSTALLER_TYPE') not in INSTALLERS:
+ if CI_INSTALLER_TYPE not in INSTALLERS:
logger.warning("INSTALLER_TYPE=%s is not a valid OPNFV installer. "
- "Available OPNFV Installers are : %s."
- "Setting INSTALLER_TYPE=undefined." % INSTALLERS)
+ "Available OPNFV Installers are : %s. "
+ "Setting INSTALLER_TYPE=undefined."
+ % (CI_INSTALLER_TYPE, INSTALLERS))
CI_INSTALLER_TYPE = "undefined"
else:
logger.info(" INSTALLER_TYPE=%s" % CI_INSTALLER_TYPE)
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()
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(
+ ft_utils.get_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...")
- cmd = ("%s/ci/check_os.sh" % FUNCTEST_REPO)
+ cmd = ("%s/ci/check_os.sh" % ft_utils.FUNCTEST_REPO)
logger.debug("Executing command: %s" % cmd)
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
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."))
check_env_variables()
create_directories()
source_rc_file()
+ patch_config_file()
verify_deployment()
install_rally()