X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=yardstick%2Fcmd%2Fcli.py;h=d2c49e89be645142f2dc4f4502a11bf33a810102;hb=252829283a4b48d43163b0ffc06d14f7a135ae4d;hp=3896ce47c6f65c2867c742cf73f9bfe218ffc8be;hpb=0e23c697e6329a57ba168cc57886b436ea87cdc4;p=yardstick.git diff --git a/yardstick/cmd/cli.py b/yardstick/cmd/cli.py index 3896ce47c..d2c49e89b 100644 --- a/yardstick/cmd/cli.py +++ b/yardstick/cmd/cli.py @@ -7,10 +7,11 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -''' +""" Command-line interface to yardstick -''' +""" +from __future__ import absolute_import import logging import os import sys @@ -19,22 +20,21 @@ from pkg_resources import get_distribution from argparse import RawDescriptionHelpFormatter from oslo_config import cfg +from yardstick import _init_logging, _LOG_STREAM_HDLR from yardstick.cmd.commands import task from yardstick.cmd.commands import runner from yardstick.cmd.commands import scenario from yardstick.cmd.commands import testcase from yardstick.cmd.commands import plugin +from yardstick.cmd.commands import env +from yardstick.cmd.commands import report CONF = cfg.CONF cli_opts = [ cfg.BoolOpt('debug', short='d', default=False, - help='increase output verbosity to debug'), - cfg.BoolOpt('verbose', - short='v', - default=False, - help='increase output verbosity to info') + help='increase output verbosity to debug') ] CONF.register_cli_opts(cli_opts) @@ -53,8 +53,8 @@ def find_config_files(path_list): return None -class YardstickCLI(): - '''Command-line interface to yardstick''' +class YardstickCLI(): # pragma: no cover + """Command-line interface to yardstick""" # Command categories categories = { @@ -62,15 +62,18 @@ class YardstickCLI(): 'runner': runner.RunnerCommands, 'scenario': scenario.ScenarioCommands, 'testcase': testcase.TestcaseCommands, - 'plugin': plugin.PluginCommands + 'plugin': plugin.PluginCommands, + 'env': env.EnvCommand, + 'report': report.ReportCommands } def __init__(self): + self.opts = [] self._version = 'yardstick version %s ' % \ get_distribution('yardstick').version def _find_actions(self, subparsers, actions_module): - '''find action methods''' + """find action methods""" # Find action methods inside actions_module and # add them to the command parser. # The 'actions_module' argument may be a class @@ -89,7 +92,7 @@ class YardstickCLI(): subparser.set_defaults(func=callback) def _add_command_parsers(self, categories, subparsers): - '''add commands to command-line parser''' + """add commands to command-line parser""" for category in categories: command_object = categories[category]() desc = command_object.__doc__ or '' @@ -111,7 +114,12 @@ class YardstickCLI(): title="Command categories", help="Available categories", handler=parser) - CONF.register_cli_opt(category_opt) + self._register_opt(category_opt) + + def _register_opt(self, opt): + + CONF.register_cli_opt(opt) + self.opts.append(opt) def _load_cli_config(self, argv): @@ -121,15 +129,9 @@ class YardstickCLI(): def _handle_global_opts(self): - # handle global opts - logger = logging.getLogger('yardstick') - logger.setLevel(logging.WARNING) - - if CONF.verbose: - logger.setLevel(logging.INFO) - + _init_logging() if CONF.debug: - logger.setLevel(logging.DEBUG) + _LOG_STREAM_HDLR.setLevel(logging.DEBUG) def _dispath_func_notask(self): @@ -143,22 +145,33 @@ class YardstickCLI(): func = CONF.category.func func(CONF.category, task_id=task_id) + def _clear_config_opts(self): + + CONF.clear() + CONF.unregister_opts(self.opts) + def main(self, argv): # pragma: no cover - '''run the command line interface''' - self._register_cli_opt() + """run the command line interface""" + try: + self._register_cli_opt() - self._load_cli_config(argv) + self._load_cli_config(argv) - self._handle_global_opts() + self._handle_global_opts() - self._dispath_func_notask() + self._dispath_func_notask() + finally: + self._clear_config_opts() def api(self, argv, task_id): # pragma: no cover - '''run the api interface''' - self._register_cli_opt() + """run the api interface""" + try: + self._register_cli_opt() - self._load_cli_config(argv) + self._load_cli_config(argv) - self._handle_global_opts() + self._handle_global_opts() - self._dispath_func_task(task_id) + self._dispath_func_task(task_id) + finally: + self._clear_config_opts()