summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/common/context.py39
-rw-r--r--openstackclient/tests/common/test_context.py24
2 files changed, 53 insertions, 10 deletions
diff --git a/openstackclient/common/context.py b/openstackclient/common/context.py
index 70c85943..4c04e661 100644
--- a/openstackclient/common/context.py
+++ b/openstackclient/common/context.py
@@ -38,6 +38,32 @@ def log_level_from_options(options):
return log_level
+def log_level_from_config(config):
+ # Check the command line option
+ verbose_level = config.get('verbose_level')
+ if config.get('debug', False):
+ verbose_level = 3
+ if verbose_level == 0:
+ verbose_level = 'error'
+ elif verbose_level == 1:
+ # If a command line option has not been specified, check the
+ # configuration file
+ verbose_level = config.get('log_level', 'warning')
+ elif verbose_level == 2:
+ verbose_level = 'info'
+ else:
+ verbose_level = 'debug'
+
+ log_level = {
+ 'critical': logging.CRITICAL,
+ 'error': logging.ERROR,
+ 'warning': logging.WARNING,
+ 'info': logging.INFO,
+ 'debug': logging.DEBUG,
+ }.get(verbose_level, logging.WARNING)
+ return log_level
+
+
def set_warning_filter(log_level):
if log_level == logging.ERROR:
warnings.simplefilter("ignore")
@@ -71,18 +97,11 @@ def setup_logging(shell, cloud_config):
:return: None
"""
- log_level = logging.WARNING
+ log_level = log_level_from_config(cloud_config.config)
+ set_warning_filter(log_level)
+
log_file = cloud_config.config.get('log_file', None)
if log_file:
- # setup the logging level
- get_log_level = cloud_config.config.get('log_level')
- if get_log_level:
- log_level = {
- 'error': logging.ERROR,
- 'info': logging.INFO,
- 'debug': logging.DEBUG,
- }.get(get_log_level, logging.WARNING)
-
# setup the logging context
log_cont = _LogContext(
clouds_name=cloud_config.config.get('cloud'),
diff --git a/openstackclient/tests/common/test_context.py b/openstackclient/tests/common/test_context.py
index 63c24205..38a4d833 100644
--- a/openstackclient/tests/common/test_context.py
+++ b/openstackclient/tests/common/test_context.py
@@ -73,6 +73,30 @@ class TestContext(utils.TestCase):
opts.verbose_level = 3
self.assertEqual(logging.DEBUG, context.log_level_from_options(opts))
+ def test_log_level_from_config(self):
+ cfg = {'verbose_level': 0}
+ self.assertEqual(logging.ERROR, context.log_level_from_config(cfg))
+ cfg = {'verbose_level': 1}
+ self.assertEqual(logging.WARNING, context.log_level_from_config(cfg))
+ cfg = {'verbose_level': 2}
+ self.assertEqual(logging.INFO, context.log_level_from_config(cfg))
+ cfg = {'verbose_level': 3}
+ self.assertEqual(logging.DEBUG, context.log_level_from_config(cfg))
+ cfg = {'verbose_level': 1, 'log_level': 'critical'}
+ self.assertEqual(logging.CRITICAL, context.log_level_from_config(cfg))
+ cfg = {'verbose_level': 1, 'log_level': 'error'}
+ self.assertEqual(logging.ERROR, context.log_level_from_config(cfg))
+ cfg = {'verbose_level': 1, 'log_level': 'warning'}
+ self.assertEqual(logging.WARNING, context.log_level_from_config(cfg))
+ cfg = {'verbose_level': 1, 'log_level': 'info'}
+ self.assertEqual(logging.INFO, context.log_level_from_config(cfg))
+ cfg = {'verbose_level': 1, 'log_level': 'debug'}
+ self.assertEqual(logging.DEBUG, context.log_level_from_config(cfg))
+ cfg = {'verbose_level': 1, 'log_level': 'bogus'}
+ self.assertEqual(logging.WARNING, context.log_level_from_config(cfg))
+ cfg = {'verbose_level': 1, 'log_level': 'info', 'debug': True}
+ self.assertEqual(logging.DEBUG, context.log_level_from_config(cfg))
+
@mock.patch('warnings.simplefilter')
def test_set_warning_filter(self, simplefilter):
context.set_warning_filter(logging.ERROR)