# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-'''
+"""
Command-line interface to yardstick
-'''
+"""
+from __future__ import absolute_import
import logging
import os
import sys
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
+from yardstick.common import import_tools
+
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)
return None
-class YardstickCLI():
- '''Command-line interface to yardstick'''
+@import_tools.decorator_banned_modules
+class YardstickCLI(object): # pragma: no cover
+ """Command-line interface to yardstick"""
# Command categories
categories = {
'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
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 ''
# register subcommands to parse additional command line arguments
def parser(subparsers):
- self._add_command_parsers(YardstickCLI.categories, subparsers)
+ self._add_command_parsers(self.categories, subparsers)
category_opt = cfg.SubCommandOpt("category",
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):
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):
+ def _dispatch_func_notask(self):
# dispatch to category parser
func = CONF.category.func
func(CONF.category)
- def _dispath_func_task(self, task_id, timestamp):
+ def _dispatch_func_task(self, task_id):
# dispatch to category parser
func = CONF.category.func
- func(CONF.category, task_id=task_id, timestamp=timestamp)
+ 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._dispatch_func_notask()
+ finally:
+ self._clear_config_opts()
- def api(self, argv, task_id, timestamp): # pragma: no cover
- '''run the api interface'''
- self._register_cli_opt()
+ def api(self, argv, task_id): # pragma: no cover
+ """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, timestamp)
+ self._dispatch_func_task(task_id)
+ finally:
+ self._clear_config_opts()