diff options
author | xudan <xudan16@huawei.com> | 2016-10-21 08:03:43 +0000 |
---|---|---|
committer | xudan <xudan16@huawei.com> | 2016-11-02 09:05:23 +0000 |
commit | 4def3379f3513aa92b6df2f23551082ba7aa6ad4 (patch) | |
tree | 5e3279f125bc34b32f7d71cc3a18a78cad37b8ff /dovetail/run.py | |
parent | d8c7fcfd3dd2bf331ca65ca41b593d65e4c0d97a (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-x | dovetail/run.py | 44 |
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() |