From 928a2ef91576837f211d5817678ebca34004984c Mon Sep 17 00:00:00 2001 From: Edward Hope-Morley Date: Mon, 19 Jan 2015 10:45:41 +0000 Subject: [PATCH] [hopem,r=gnuoy] Set root logger level to DEBUG in /etc/logging.conf if debug is True otherwise keystone logger remains as WARNING. Closes-Bug: 1407317 --- hooks/keystone_context.py | 11 +++++++ hooks/keystone_utils.py | 5 ++++ templates/icehouse/logging.conf | 43 ++++++++++++++++++++++++++++ unit_tests/test_keystone_contexts.py | 10 +++++++ 4 files changed, 69 insertions(+) create mode 100644 templates/icehouse/logging.conf diff --git a/hooks/keystone_context.py b/hooks/keystone_context.py index 8d0d40cd..83653712 100644 --- a/hooks/keystone_context.py +++ b/hooks/keystone_context.py @@ -134,3 +134,14 @@ class KeystoneContext(context.OSContextGenerator): resolve_address(ADMIN), api_port('keystone-admin')).rstrip('v2.0') return ctxt + + +class KeystoneLoggingContext(context.OSContextGenerator): + + def __call__(self): + ctxt = {} + debug = config('debug') + if debug and debug.lower() in ['yes', 'true']: + ctxt['root_level'] = 'DEBUG' + + return ctxt diff --git a/hooks/keystone_utils.py b/hooks/keystone_utils.py index 58123c3e..fda9f4f1 100644 --- a/hooks/keystone_utils.py +++ b/hooks/keystone_utils.py @@ -100,6 +100,7 @@ API_PORTS = { } KEYSTONE_CONF = "/etc/keystone/keystone.conf" +KEYSTONE_LOGGER_CONF = "/etc/keystone/logging.conf" KEYSTONE_CONF_DIR = os.path.dirname(KEYSTONE_CONF) STORED_PASSWD = "/var/lib/keystone/keystone.passwd" STORED_TOKEN = "/var/lib/keystone/keystone.token" @@ -125,6 +126,10 @@ BASE_RESOURCE_MAP = OrderedDict([ context.BindHostContext(), context.WorkerConfigContext()], }), + (KEYSTONE_LOGGER_CONF, { + 'contexts': [keystone_context.KeystoneLoggingContext()], + 'services': BASE_SERVICES, + }), (HAPROXY_CONF, { 'contexts': [context.HAProxyContext(singlenode_mode=True), keystone_context.HAProxyContext()], diff --git a/templates/icehouse/logging.conf b/templates/icehouse/logging.conf new file mode 100644 index 00000000..331ff697 --- /dev/null +++ b/templates/icehouse/logging.conf @@ -0,0 +1,43 @@ +[loggers] +keys=root + +[formatters] +keys=normal,normal_with_name,debug + +[handlers] +keys=production,file,devel + +[logger_root] +{% if root_level -%} +level={{ root_level }} +{% else -%} +level=WARNING +{% endif -%} +handlers=file + +[handler_production] +class=handlers.SysLogHandler +level=ERROR +formatter=normal_with_name +args=(('localhost', handlers.SYSLOG_UDP_PORT), handlers.SysLogHandler.LOG_USER) + +[handler_file] +class=FileHandler +level=DEBUG +formatter=normal_with_name +args=('/var/log/keystone/keystone.log', 'a') + +[handler_devel] +class=StreamHandler +level=NOTSET +formatter=debug +args=(sys.stdout,) + +[formatter_normal] +format=%(asctime)s %(levelname)s %(message)s + +[formatter_normal_with_name] +format=(%(name)s): %(asctime)s %(levelname)s %(message)s + +[formatter_debug] +format=(%(name)s): %(asctime)s %(levelname)s %(module)s %(funcName)s %(message)s diff --git a/unit_tests/test_keystone_contexts.py b/unit_tests/test_keystone_contexts.py index 70b44b34..a10426f4 100644 --- a/unit_tests/test_keystone_contexts.py +++ b/unit_tests/test_keystone_contexts.py @@ -119,3 +119,13 @@ class TestKeystoneContexts(CharmTestCase): msg = "Multiple networks configured but net_type" \ " is None (os-public-network)." mock_log.assert_called_with(msg, level="WARNING") + + @patch.object(context, 'config') + def test_keystone_logger_context(self, mock_config): + ctxt = context.KeystoneLoggingContext() + + mock_config.return_value = None + self.assertEqual({}, ctxt()) + + mock_config.return_value = 'True' + self.assertEqual({'root_level': 'DEBUG'}, ctxt())