From ca9965c3282d028da52ec465d5024f16fb54ba04 Mon Sep 17 00:00:00 2001 From: TerryHowe Date: Sun, 9 Aug 2015 07:01:18 -0600 Subject: [PATCH] Move options to log level out of shell.py Move the conversion of command line options to log level out of shell.py. Change-Id: I86cb45a85cd63927aa1c87c1eed27542981df659 Implements: blueprint logging-migration --- openstackclient/common/context.py | 16 ++++++++++++++++ openstackclient/shell.py | 13 +------------ openstackclient/tests/common/test_context.py | 11 +++++++++++ 3 files changed, 28 insertions(+), 12 deletions(-) diff --git a/openstackclient/common/context.py b/openstackclient/common/context.py index 348c5509b..70c859439 100644 --- a/openstackclient/common/context.py +++ b/openstackclient/common/context.py @@ -22,6 +22,22 @@ _LOG_MESSAGE_FORMAT = ('%(asctime)s.%(msecs)03d %(process)d ' _LOG_DATE_FORMAT = '%Y-%m-%d %H:%M:%S' +def log_level_from_options(options): + # if --debug, --quiet or --verbose is not specified, + # the default logging level is warning + log_level = logging.WARNING + if options.verbose_level == 0: + # --quiet + log_level = logging.ERROR + elif options.verbose_level == 2: + # One --verbose + log_level = logging.INFO + elif options.verbose_level >= 3: + # Two or more --verbose + log_level = logging.DEBUG + return log_level + + def set_warning_filter(log_level): if log_level == logging.ERROR: warnings.simplefilter("ignore") diff --git a/openstackclient/shell.py b/openstackclient/shell.py index 58eb9f546..6ba19d194 100644 --- a/openstackclient/shell.py +++ b/openstackclient/shell.py @@ -113,18 +113,7 @@ class OpenStackShell(app.App): super(OpenStackShell, self).configure_logging() # Set logging to the requested level - if self.options.verbose_level == 0: - # --quiet - log_level = logging.ERROR - elif self.options.verbose_level == 1: - # This is the default case, no --debug, --verbose or --quiet - log_level = logging.WARNING - elif self.options.verbose_level == 2: - # One --verbose - log_level = logging.INFO - elif self.options.verbose_level >= 3: - # Two or more --verbose - log_level = logging.DEBUG + log_level = context.log_level_from_options(self.options) context.set_warning_filter(log_level) # Set the handler logging level of FileHandler(--log-file) diff --git a/openstackclient/tests/common/test_context.py b/openstackclient/tests/common/test_context.py index 8e1bcf838..63c242051 100644 --- a/openstackclient/tests/common/test_context.py +++ b/openstackclient/tests/common/test_context.py @@ -62,6 +62,17 @@ class TestContext(utils.TestCase): context.setup_logging(shell, cloud_config) self.assertEqual(True, shell.enable_operation_logging) + def test_log_level_from_options(self): + opts = mock.Mock() + opts.verbose_level = 0 + self.assertEqual(logging.ERROR, context.log_level_from_options(opts)) + opts.verbose_level = 1 + self.assertEqual(logging.WARNING, context.log_level_from_options(opts)) + opts.verbose_level = 2 + self.assertEqual(logging.INFO, context.log_level_from_options(opts)) + opts.verbose_level = 3 + self.assertEqual(logging.DEBUG, context.log_level_from_options(opts)) + @mock.patch('warnings.simplefilter') def test_set_warning_filter(self, simplefilter): context.set_warning_filter(logging.ERROR)