summaryrefslogtreecommitdiff
path: root/oslo_policy
diff options
context:
space:
mode:
authorBen Nemec <bnemec@redhat.com>2018-12-06 19:13:15 +0000
committerBrian Rosmaita <rosmaita.fossdev@gmail.com>2019-01-07 18:11:41 +0000
commit3d85afb24a014f43e961887c4e5b679e7eb7dec8 (patch)
treec91b7cd84c1c69cd81570e566e3d93965c50b757 /oslo_policy
parentc9ea8f7bfa417f6bd82e1e098b7e9060108ed60a (diff)
downloadoslo-policy-3d85afb24a014f43e961887c4e5b679e7eb7dec8.tar.gz
Fix sample config value when set_defaults is used
By calling set_default[1] on a conf object it only applies to opts registered to that object. This causes an incorrect value to appear in the generated sample config because it deals with a list of raw opts, not a conf object. To fix this, we can call the global set_defaults[2] on the cfg module which alters the opts directly. This is the method used in the cors middleware[3] and works as expected there. This does complicate the unit tests, however. Because we're altering global state we need to save the original opts and restore them after the test. Furthermore, the conf.reset() call in the config fixture doesn't sufficiently reset the conf object to allow it to recognize the replaced opts. For the purposes of this test we can just create a standalone conf object though, which gets past that problem. It's possible that we should fix reset() so it actually removes opts in groups completely, but I'm unsure what implications that might have for other users of the function. 1: https://github.com/openstack/oslo.config/blob/b5df53543fd3edbc369cacbdd1c3038bdce9085e/oslo_config/cfg.py#L2433 2: https://github.com/openstack/oslo.config/blob/b5df53543fd3edbc369cacbdd1c3038bdce9085e/oslo_config/cfg.py#L391 3: https://github.com/openstack/oslo.middleware/blob/8c7fa5bb105cdfd15376c6b1f42ef1383b7cb3eb/oslo_middleware/cors.py#L88 Change-Id: I3af9de1b39b6360ecfcb448d8c37b463e1a42ca7 Closes-Bug: 1807184
Diffstat (limited to 'oslo_policy')
-rw-r--r--oslo_policy/opts.py2
-rw-r--r--oslo_policy/tests/test_opts.py12
2 files changed, 11 insertions, 3 deletions
diff --git a/oslo_policy/opts.py b/oslo_policy/opts.py
index 9bd8410..368797f 100644
--- a/oslo_policy/opts.py
+++ b/oslo_policy/opts.py
@@ -120,4 +120,4 @@ def set_defaults(conf, policy_file=None):
_register(conf)
if policy_file is not None:
- conf.set_default('policy_file', policy_file, group=_option_group)
+ cfg.set_defaults(_options, policy_file=policy_file)
diff --git a/oslo_policy/tests/test_opts.py b/oslo_policy/tests/test_opts.py
index 2ec5b34..7c455ca 100644
--- a/oslo_policy/tests/test_opts.py
+++ b/oslo_policy/tests/test_opts.py
@@ -10,7 +10,9 @@
# License for the specific language governing permissions and limitations
# under the License.
-from oslo_config import fixture as config
+import copy
+
+from oslo_config import cfg
from oslotest import base as test_base
from oslo_policy import opts
@@ -20,7 +22,13 @@ class OptsTestCase(test_base.BaseTestCase):
def setUp(self):
super(OptsTestCase, self).setUp()
- self.conf = self.useFixture(config.Config()).conf
+ self.conf = cfg.ConfigOpts()
+ self.original_opts = opts._options
+ opts._options = copy.deepcopy(opts._options)
+
+ def reset():
+ opts._options = self.original_opts
+ self.addCleanup(reset)
def test_set_defaults_policy_file(self):
opts._register(self.conf)