summaryrefslogtreecommitdiffstats
path: root/dovetail/run.py
diff options
context:
space:
mode:
authorxudan <xudan16@huawei.com>2016-10-21 08:03:43 +0000
committerxudan <xudan16@huawei.com>2016-11-02 09:05:23 +0000
commit4def3379f3513aa92b6df2f23551082ba7aa6ad4 (patch)
tree5e3279f125bc34b32f7d71cc3a18a78cad37b8ff /dovetail/run.py
parentd8c7fcfd3dd2bf331ca65ca41b593d65e4c0d97a (diff)
dovetail tool: Add cli mechanism for changing envs at run-time
JIRA: DOVETAIL-23 1. Add file cmd_config.yml for defining arguments and options. 2. Using python click module to add and parse cmds in cmd_config.yml 3. Using envs options to update envs in yardstick/functest config file Change-Id: Ie513c0f0a1ed76f29408419a4bcbbcf21334bb3f Signed-off-by: xudan <xudan16@huawei.com>
Diffstat (limited to 'dovetail/run.py')
-rwxr-xr-xdovetail/run.py44
1 files changed, 39 insertions, 5 deletions
diff --git a/dovetail/run.py b/dovetail/run.py
index ddeb3117..39dec07c 100755
--- a/dovetail/run.py
+++ b/dovetail/run.py
@@ -18,6 +18,8 @@ from testcase import Testcase
from testcase import Scenario
from report import Report
from conf.dovetail_config import SCENARIO_NAMING_FMT
+from conf.dovetail_config import dovetail_config
+from conf.dovetail_config import update_envs
logger = dt_logger.Logger('run.py').getLogger()
@@ -69,17 +71,49 @@ def run_test(scenario):
Report.check_result(testcase, db_result)
-@click.command()
-@click.option('--scenario', default='basic', help='certification scenario')
-def main(scenario):
+def filter_env_options(input_dict):
+ envs_options = {}
+ for key, value in input_dict.items():
+ key = key.upper()
+ if key in dovetail_config['cli']['options']['envs']:
+ envs_options[key] = value
+ return envs_options
+
+
+def main(*args, **kwargs):
"""Dovetail certification test entry!"""
logger.info('=======================================')
- logger.info('Dovetail certification: %s!' % scenario)
+ logger.info('Dovetail certification: %s!' % (kwargs['scenario']))
logger.info('=======================================')
+ envs_options = filter_env_options(kwargs)
+ update_envs(envs_options)
+ logger.info('Your new envs for functest: %s' %
+ dovetail_config['functest']['envs'])
+ logger.info('Your new envs for yardstick: %s' %
+ dovetail_config['yardstick']['envs'])
load_testcase()
- scenario_yaml = load_scenario(scenario)
+ scenario_yaml = load_scenario(kwargs['scenario'])
run_test(scenario_yaml)
Report.generate(scenario_yaml)
+
+CONTEXT_SETTINGS = dict(help_option_names=['-h', '--help'])
+if dovetail_config['cli']['options'] is not None:
+ for key, value in dovetail_config['cli']['options'].items():
+ if value is not None:
+ for k, v in value.items():
+ flags = v['flags']
+ del v['flags']
+ main = click.option(*flags, **v)(main)
+if dovetail_config['cli']['arguments'] is not None:
+ for key, value in dovetail_config['cli']['arguments'].items():
+ if value is not None:
+ for k, v in value.items():
+ flags = v['flags']
+ del v['flags']
+ main = click.argument(flags, **v)(main)
+main = click.command(context_settings=CONTEXT_SETTINGS)(main)
+
+
if __name__ == '__main__':
main()