diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-12-06 23:36:17 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-12-06 23:36:17 +0000 |
| commit | b67a752444be399bc0000069b2c60eee3ab94dad (patch) | |
| tree | 8728ac74f8e89f461e3cb6e1611404264f0701e0 | |
| parent | 78941d4c89b2d23930520197756d4e65e58d1749 (diff) | |
| parent | 9b8128910787ac5f3e80ab81266d971ff20d1805 (diff) | |
Merge "Allow nova and others to override some logging defaults"
| -rw-r--r-- | openstack/common/cfg.py | 7 | ||||
| -rw-r--r-- | openstack/common/log.py | 6 | ||||
| -rw-r--r-- | tests/unit/test_cfg.py | 45 | ||||
| -rw-r--r-- | tests/unit/test_log.py | 29 |
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) |
