Merge "fix an issue with looking up deprecated option names in code"

This commit is contained in:
Jenkins 2017-07-19 06:13:29 +00:00 committed by Gerrit Code Review
commit 11c39ac065
2 changed files with 18 additions and 0 deletions

View File

@ -3068,6 +3068,8 @@ class ConfigOpts(collections.Mapping):
real_opt_name = None
real_group_name = None
group_name = group or 'DEFAULT'
if hasattr(group_name, 'name'):
group_name = group_name.name
dep_group = self._deprecated_opts.get(group_name)
if dep_group:
real_opt_dict = dep_group.get(opt_name)

View File

@ -2527,6 +2527,22 @@ class OptNameSeparatorTestCase(BaseTestCase):
self.assertNotIn(self.opt_dest, self.conf)
self.assertNotIn(self.broken_opt_dest, self.conf)
def test_deprecated_name_alternate_group(self):
self.conf.register_opt(
cfg.StrOpt('foobar',
deprecated_name=self.opt_name,
deprecated_group='testing'),
group=cfg.OptGroup('testing'),
)
self.assertTrue(hasattr(self.conf.testing, 'foobar'))
# TODO(mtreinish): Add a check on the log message
self.assertTrue(hasattr(self.conf.testing, self.opt_dest))
self.assertFalse(hasattr(self.conf.testing, self.broken_opt_dest))
self.assertIn('foobar', self.conf.testing)
self.assertNotIn(self.opt_dest, self.conf.testing)
self.assertNotIn(self.broken_opt_dest, self.conf.testing)
def test_deprecated_name_cli(self):
self.conf.register_cli_opt(cfg.BoolOpt('foobar',
deprecated_name=self.opt_name))