Implements import_group
Created import_group method in cfg.py Added testcases Fixes bug #1107843 Change-Id: I427d4069dacbb6e586687370adbb08b5d50f7b63
This commit is contained in:
parent
a118969fb7
commit
b1730fcbc4
|
@ -1297,6 +1297,24 @@ class ConfigOpts(collections.Mapping):
|
|||
__import__(module_str)
|
||||
self._get_opt_info(name, group)
|
||||
|
||||
def import_group(self, group, module_str):
|
||||
"""Import an option group from a module.
|
||||
|
||||
Import a module and check that a given option group is registered.
|
||||
|
||||
This is intended for use with global configuration objects
|
||||
like cfg.CONF where modules commonly register options with
|
||||
CONF at module load time. If one module requires an option group
|
||||
defined by another module it can use this method to explicitly
|
||||
declare the dependency.
|
||||
|
||||
:param group: an option OptGroup object or group name
|
||||
:param module_str: the name of a module to import
|
||||
:raises: ImportError, NoSuchGroupError
|
||||
"""
|
||||
__import__(module_str)
|
||||
self._get_group(group)
|
||||
|
||||
@__clear_cache
|
||||
def set_override(self, name, override, group=None):
|
||||
"""Override an opt value.
|
||||
|
|
|
@ -1241,6 +1241,23 @@ class ImportOptTestCase(BaseTestCase):
|
|||
'blaa', 'tests.testmods.blaa_opt', group='blaa')
|
||||
|
||||
|
||||
class ImportGroupTestCase(BaseTestCase):
|
||||
|
||||
def test_import_group(self):
|
||||
self.assertFalse(hasattr(CONF, 'qux'))
|
||||
CONF.import_group('qux', 'tests.testmods.baz_qux_opt')
|
||||
self.assertTrue(hasattr(CONF, 'qux'))
|
||||
self.assertTrue(hasattr(CONF.qux, 'baz'))
|
||||
|
||||
def test_import_group_import_error(self):
|
||||
self.assertRaises(ImportError, CONF.import_group,
|
||||
'qux', 'tests.testmods.bazzz_quxxx_opt')
|
||||
|
||||
def test_import_group_no_such_group(self):
|
||||
self.assertRaises(NoSuchGroupError, CONF.import_group,
|
||||
'quxxx', 'tests.testmods.baz_qux_opt')
|
||||
|
||||
|
||||
class RequiredOptsTestCase(BaseTestCase):
|
||||
|
||||
def setUp(self):
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
||||
|
||||
# Copyright (c) 2013 Intel Corporation.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from oslo.config import cfg
|
||||
|
||||
CONF = cfg.CONF
|
||||
|
||||
CONF.register_opt(cfg.StrOpt('baz'), group='qux')
|
Loading…
Reference in New Issue