diff options
author | 2017-11-23 08:55:04 +0000 | |
---|---|---|
committer | 2017-11-23 08:55:04 +0000 | |
commit | 71ba783c1279370af035ff7cac2de7522e95de78 (patch) | |
tree | e5d60fb97657c9204d7f749d059f26530d9594cb /functest/ci | |
parent | 01a5192428eb99afcb94047e6faa54e1d57114d1 (diff) | |
parent | d4996440fa16297aee7a925e6357a9cfd42d24f8 (diff) |
Merge "Remove prepare_env"
Diffstat (limited to 'functest/ci')
-rw-r--r-- | functest/ci/check_deployment.py | 2 | ||||
-rw-r--r-- | functest/ci/prepare_env.py | 171 | ||||
-rw-r--r-- | functest/ci/run_tests.py | 51 |
3 files changed, 52 insertions, 172 deletions
diff --git a/functest/ci/check_deployment.py b/functest/ci/check_deployment.py index db94fd74..ae016a80 100644 --- a/functest/ci/check_deployment.py +++ b/functest/ci/check_deployment.py @@ -139,7 +139,7 @@ class CheckDeployment(object): def check_all(self): """ Calls all the class functions and returns 0 if all of them succeed. - This is the method called by prepare_env or CLI + This is the method called by CLI """ self.check_rc() try: diff --git a/functest/ci/prepare_env.py b/functest/ci/prepare_env.py deleted file mode 100644 index 2cb705ca..00000000 --- a/functest/ci/prepare_env.py +++ /dev/null @@ -1,171 +0,0 @@ -#!/usr/bin/env python -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 -# - -import argparse -import logging -import logging.config -import os -import pkg_resources -import re -import sys - -import yaml - -from functest.ci import check_deployment -import functest.utils.functest_utils as ft_utils -import functest.utils.openstack_utils as os_utils -from functest.utils.constants import CONST - -actions = ['start', 'check'] - -""" logging configuration """ -logger = logging.getLogger('functest.ci.prepare_env') -handler = None -# set the architecture to default -pod_arch = os.getenv("POD_ARCH", None) -arch_filter = ['aarch64'] - -CONFIG_FUNCTEST_PATH = pkg_resources.resource_filename( - 'functest', 'ci/config_functest.yaml') -CONFIG_PATCH_PATH = pkg_resources.resource_filename( - 'functest', 'ci/config_patch.yaml') -CONFIG_AARCH64_PATCH_PATH = pkg_resources.resource_filename( - 'functest', 'ci/config_aarch64_patch.yaml') - - -class PrepareEnvParser(object): - - def __init__(self): - self.parser = argparse.ArgumentParser() - self.parser.add_argument("action", help="Possible actions are: " - "'{d[0]}|{d[1]}' ".format(d=actions), - choices=actions) - self.parser.add_argument("-d", "--debug", help="Debug mode", - action="store_true") - - def parse_args(self, argv=[]): - return vars(self.parser.parse_args(argv)) - - -def print_separator(): - logger.info("==============================================") - - -def source_rc_file(): - print_separator() - - logger.info("Sourcing the OpenStack RC file...") - os_utils.source_credentials(CONST.__getattribute__('openstack_creds')) - for key, value in os.environ.iteritems(): - if re.search("OS_", key): - if key == 'OS_AUTH_URL': - CONST.__setattr__('OS_AUTH_URL', value) - elif key == 'OS_USERNAME': - CONST.__setattr__('OS_USERNAME', value) - elif key == 'OS_TENANT_NAME': - CONST.__setattr__('OS_TENANT_NAME', value) - elif key == 'OS_PASSWORD': - CONST.__setattr__('OS_PASSWORD', value) - - -def update_config_file(): - patch_file(CONFIG_PATCH_PATH) - - if pod_arch and pod_arch in arch_filter: - patch_file(CONFIG_AARCH64_PATCH_PATH) - - if "TEST_DB_URL" in os.environ: - update_db_url() - - -def patch_file(patch_file_path): - logger.debug('Updating file: %s', patch_file_path) - with open(patch_file_path) as f: - patch_file = yaml.safe_load(f) - - updated = False - for key in patch_file: - if key in CONST.__getattribute__('DEPLOY_SCENARIO'): - new_functest_yaml = dict(ft_utils.merge_dicts( - ft_utils.get_functest_yaml(), patch_file[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='"')) - - -def update_db_url(): - with open(CONFIG_FUNCTEST_PATH) as f: - functest_yaml = yaml.safe_load(f) - - with open(CONFIG_FUNCTEST_PATH, "w") as f: - functest_yaml["results"]["test_db_url"] = os.environ.get('TEST_DB_URL') - f.write(yaml.dump(functest_yaml, default_style='"')) - - -def verify_deployment(): - print_separator() - logger.info("Verifying OpenStack deployment...") - deployment = check_deployment.CheckDeployment() - deployment.check_all() - - -def create_flavor(): - _, flavor_id = os_utils.get_or_create_flavor('m1.tiny', - '512', - '1', - '1', - public=True) - if flavor_id is None: - raise Exception('Failed to create flavor') - - -def check_environment(): - msg_not_active = "The Functest environment is not installed." - if not os.path.isfile(CONST.__getattribute__('env_active')): - raise Exception(msg_not_active) - - with open(CONST.__getattribute__('env_active'), "r") as env_file: - s = env_file.read() - if not re.search("1", s): - raise Exception(msg_not_active) - - logger.info("Functest environment is installed.") - - -def prepare_env(**kwargs): - try: - if not (kwargs['action'] in actions): - logger.error('Argument not valid.') - return -1 - elif kwargs['action'] == "start": - logger.info("######### Preparing Functest environment #########\n") - verify_deployment() - source_rc_file() - update_config_file() - create_flavor() - with open(CONST.__getattribute__('env_active'), "w") as env_file: - env_file.write("1") - check_environment() - elif kwargs['action'] == "check": - check_environment() - except Exception as e: - logger.error(e) - return -1 - return 0 - - -def main(): - logging.config.fileConfig(pkg_resources.resource_filename( - 'functest', 'ci/logging.ini')) - logging.captureWarnings(True) - parser = PrepareEnvParser() - args = parser.parse_args(sys.argv[1:]) - return prepare_env(**args) diff --git a/functest/ci/run_tests.py b/functest/ci/run_tests.py index d4acd9c5..03d62d99 100644 --- a/functest/ci/run_tests.py +++ b/functest/ci/run_tests.py @@ -19,6 +19,7 @@ import sys import textwrap import prettytable +import yaml import functest.ci.tier_builder as tb import functest.core.testcase as testcase @@ -29,6 +30,16 @@ from functest.utils.constants import CONST # __name__ cannot be used here logger = logging.getLogger('functest.ci.run_tests') +CONFIG_FUNCTEST_PATH = pkg_resources.resource_filename( + 'functest', 'ci/config_functest.yaml') +CONFIG_PATCH_PATH = pkg_resources.resource_filename( + 'functest', 'ci/config_patch.yaml') +CONFIG_AARCH64_PATCH_PATH = pkg_resources.resource_filename( + 'functest', 'ci/config_aarch64_patch.yaml') +# set the architecture to default +pod_arch = os.getenv("POD_ARCH", None) +arch_filter = ['aarch64'] + class Result(enum.Enum): EX_OK = os.EX_OK @@ -76,6 +87,44 @@ class Runner(object): pkg_resources.resource_filename('functest', 'ci/testcases.yaml')) @staticmethod + def update_config_file(): + Runner.patch_file(CONFIG_PATCH_PATH) + + if pod_arch and pod_arch in arch_filter: + Runner.patch_file(CONFIG_AARCH64_PATCH_PATH) + + if "TEST_DB_URL" in os.environ: + Runner.update_db_url() + + @staticmethod + def patch_file(patch_file_path): + logger.debug('Updating file: %s', patch_file_path) + with open(patch_file_path) as f: + patch_file = yaml.safe_load(f) + + updated = False + for key in patch_file: + if key in CONST.__getattribute__('DEPLOY_SCENARIO'): + new_functest_yaml = dict(ft_utils.merge_dicts( + ft_utils.get_functest_yaml(), patch_file[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='"')) + + @staticmethod + def update_db_url(): + with open(CONFIG_FUNCTEST_PATH) as f: + functest_yaml = yaml.safe_load(f) + + with open(CONFIG_FUNCTEST_PATH, "w") as f: + functest_yaml["results"]["test_db_url"] = os.environ.get( + 'TEST_DB_URL') + f.write(yaml.dump(functest_yaml, default_style='"')) + + @staticmethod def source_rc_file(): rc_file = CONST.__getattribute__('openstack_creds') if not os.path.isfile(rc_file): @@ -192,6 +241,8 @@ class Runner(object): self.run_tier(tier) def main(self, **kwargs): + Runner.update_config_file() + if 'noclean' in kwargs: self.clean_flag = not kwargs['noclean'] if 'report' in kwargs: |