diff options
Diffstat (limited to 'functest/ci/prepare_env.py')
-rw-r--r-- | functest/ci/prepare_env.py | 171 |
1 files changed, 0 insertions, 171 deletions
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) |