summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-12-06 23:36:17 +0000
committerGerrit Code Review <review@openstack.org>2012-12-06 23:36:17 +0000
commitb67a752444be399bc0000069b2c60eee3ab94dad (patch)
tree8728ac74f8e89f461e3cb6e1611404264f0701e0
parent78941d4c89b2d23930520197756d4e65e58d1749 (diff)
parent9b8128910787ac5f3e80ab81266d971ff20d1805 (diff)
Merge "Allow nova and others to override some logging defaults"
-rw-r--r--openstack/common/cfg.py7
-rw-r--r--openstack/common/log.py6
-rw-r--r--tests/unit/test_cfg.py45
-rw-r--r--tests/unit/test_log.py29
4 files changed, 87 insertions, 0 deletions
diff --git a/openstack/common/cfg.py b/openstack/common/cfg.py
index acef6fb..99d4aa2 100644
--- a/openstack/common/cfg.py
+++ b/openstack/common/cfg.py
@@ -480,6 +480,13 @@ def _is_opt_registered(opts, opt):
return False
+def set_defaults(opts, **kwargs):
+ for opt in opts:
+ if opt.dest in kwargs:
+ opt.default = kwargs[opt.dest]
+ break
+
+
class Opt(object):
"""Base class for all configuration options.
diff --git a/openstack/common/log.py b/openstack/common/log.py
index 8469fe8..707a10a 100644
--- a/openstack/common/log.py
+++ b/openstack/common/log.py
@@ -289,6 +289,12 @@ def setup(product_name):
_setup_logging_from_conf(product_name)
+def set_defaults(logging_context_format_string):
+ cfg.set_defaults(log_opts,
+ logging_context_format_string=
+ logging_context_format_string)
+
+
def _find_facility_from_conf():
facility_names = logging.handlers.SysLogHandler.facility_names
facility = getattr(logging.handlers.SysLogHandler,
diff --git a/tests/unit/test_cfg.py b/tests/unit/test_cfg.py
index e7d58ec..f058d56 100644
--- a/tests/unit/test_cfg.py
+++ b/tests/unit/test_cfg.py
@@ -1766,3 +1766,48 @@ class SubCommandTestCase(BaseTestCase):
self.stubs.Set(sys, 'stderr', StringIO.StringIO())
self.assertRaises(SystemExit, self.conf, [])
self.assertTrue('multiple' in sys.stderr.getvalue())
+
+
+class SetDefaultsTestCase(BaseTestCase):
+
+ def test_default_to_none(self):
+ opts = [StrOpt('foo', default='foo')]
+ self.conf.register_opts(opts)
+ set_defaults(opts, foo=None)
+ self.conf([])
+ self.assertEquals(self.conf.foo, None)
+
+ def test_default_from_none(self):
+ opts = [StrOpt('foo')]
+ self.conf.register_opts(opts)
+ set_defaults(opts, foo='bar')
+ self.conf([])
+ self.assertEquals(self.conf.foo, 'bar')
+
+ def test_change_default(self):
+ opts = [StrOpt('foo', default='foo')]
+ self.conf.register_opts(opts)
+ set_defaults(opts, foo='bar')
+ self.conf([])
+ self.assertEquals(self.conf.foo, 'bar')
+
+ def test_group_default_to_none(self):
+ opts = [StrOpt('foo', default='foo')]
+ self.conf.register_opts(opts, group='blaa')
+ set_defaults(opts, foo=None)
+ self.conf([])
+ self.assertEquals(self.conf.blaa.foo, None)
+
+ def test_group_default_from_none(self):
+ opts = [StrOpt('foo')]
+ self.conf.register_opts(opts, group='blaa')
+ set_defaults(opts, foo='bar')
+ self.conf([])
+ self.assertEquals(self.conf.blaa.foo, 'bar')
+
+ def test_group_change_default(self):
+ opts = [StrOpt('foo', default='foo')]
+ self.conf.register_opts(opts, group='blaa')
+ set_defaults(opts, foo='bar')
+ self.conf([])
+ self.assertEquals(self.conf.blaa.foo, 'bar')
diff --git a/tests/unit/test_log.py b/tests/unit/test_log.py
index f9c6e4c..cc032d9 100644
--- a/tests/unit/test_log.py
+++ b/tests/unit/test_log.py
@@ -293,3 +293,32 @@ class FancyRecordTestCase(test_utils.BaseTestCase):
self.colorlog.warn("warn", context=ctxt)
self.assertEqual(infoexpected + warnexpected, self.stream.getvalue())
+
+
+class SetDefaultsTestCase(test_utils.BaseTestCase):
+ class TestConfigOpts(cfg.ConfigOpts):
+ def __call__(self, args=None):
+ return cfg.ConfigOpts.__call__(self,
+ args=args,
+ prog='test',
+ version='1.0',
+ usage='%(prog)s FOO BAR',
+ default_config_files=[])
+
+ def setUp(self):
+ super(SetDefaultsTestCase, self).setUp()
+ self.conf = self.TestConfigOpts()
+ self.conf.register_opts(log.log_opts)
+
+ def test_default_to_none(self):
+ log.set_defaults(logging_context_format_string=None)
+ self.conf([])
+ self.assertEquals(self.conf.logging_context_format_string, None)
+
+ def test_change_default(self):
+ my_default = '%(asctime)s %(levelname)s %(name)s [%(request_id)s '\
+ '%(user_id)s %(project)s] %(instance)s'\
+ '%(message)s'
+ log.set_defaults(logging_context_format_string=my_default)
+ self.conf([])
+ self.assertEquals(self.conf.logging_context_format_string, my_default)