Merge "Disallow config option name as same as attribute of ConfigOpts"

This commit is contained in:
Jenkins 2016-05-20 20:53:54 +00:00 committed by Gerrit Code Review
commit 93e2449ab0
2 changed files with 18 additions and 0 deletions

View File

@ -2031,6 +2031,8 @@ class ConfigOpts(collections.Mapping):
:oslo.config:option:`config_dir` options.
"""
disallow_names = ('project', 'prog', 'version',
'usage', 'default_config_files')
def __init__(self):
"""Construct a ConfigOpts object."""
@ -2251,6 +2253,14 @@ class ConfigOpts(collections.Mapping):
self._add_cli_opt(opt, group)
return group._register_opt(opt, cli)
# NOTE(gcb) We can't use some names which are same with attributes of
# Opts in default group. They includes project, prog, version, usage
# and default_config_files.
if group is None:
if opt.name in self.disallow_names:
raise ValueError('Name %s was reserved for oslo.config.'
% opt.name)
if cli:
self._add_cli_opt(opt, None)

View File

@ -2170,6 +2170,14 @@ class ReRegisterOptTestCase(BaseTestCase):
self.assertFalse(self.conf.register_opt(opt, group='blaa'))
class RegisterOptNameTestCase(BaseTestCase):
def test_register_opt_with_disallow_name(self):
for name in cfg.ConfigOpts.disallow_names:
opt = cfg.StrOpt(name)
self.assertRaises(ValueError, self.conf.register_opt, opt)
class TemplateSubstitutionTestCase(BaseTestCase):
def _prep_test_str_sub(self, foo_default=None, bar_default=None):