summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Nemec <bnemec@redhat.com>2019-09-13 17:08:05 +0000
committerBen Nemec <bnemec@redhat.com>2019-09-17 21:50:14 +0000
commit5d3aeb53a9f3686353e0740c1891bd0e66e90650 (patch)
tree60040d016240c0adb8711291ad244d063025aa65
parente433a3cbec5da0241bb1716b8bfda9fa927069ce (diff)
downloadoslo-policy-5d3aeb53a9f3686353e0740c1891bd0e66e90650.tar.gz
Suppress deprecation warnings in oslopolicy-list-redundant
When running the tool against a project with a lot of deprecated policies, the deprecation warnings overwhelm the important output from the tool. Since checking for deprecations isn't the purpose of this tool, let's just suppress warnings and limit the output to the list of redundant policy rules that the user cares about. I will note that the suppress_deprecation_warnings member is marked as test only, but that was targeted at consumers of oslo.policy rather than oslo.policy itself. I could also argue that we're "testing" for redundant policies here, but that feels like semantic hair splitting. :-) Change-Id: I194af14ebd341366dbb1dd033654739a7f3d085c Partial-Bug: 1836568
-rw-r--r--oslo_policy/generator.py5
-rw-r--r--oslo_policy/tests/test_generator.py14
-rw-r--r--releasenotes/notes/list-redundant-deprecation-warnings-f84a06133efdaedd.yaml6
3 files changed, 23 insertions, 2 deletions
diff --git a/oslo_policy/generator.py b/oslo_policy/generator.py
index bd75389..9e283d9 100644
--- a/oslo_policy/generator.py
+++ b/oslo_policy/generator.py
@@ -315,6 +315,11 @@ def _list_redundant(namespace):
in a policy file and operators should consider removing them.
"""
enforcer = _get_enforcer(namespace)
+ # NOTE(bnemec): We don't want to see policy deprecation warnings in the
+ # output of this tool. They tend to overwhelm the output that the user
+ # actually cares about, and checking for deprecations isn't the purpose of
+ # this tool.
+ enforcer.suppress_deprecation_warnings = True
# Ensure that files have been parsed
enforcer.load_rules()
diff --git a/oslo_policy/tests/test_generator.py b/oslo_policy/tests/test_generator.py
index 18c5406..a0beeae 100644
--- a/oslo_policy/tests/test_generator.py
+++ b/oslo_policy/tests/test_generator.py
@@ -564,7 +564,8 @@ class ListRedundantTestCase(base.PolicyBaseTestCase):
def setUp(self):
super(ListRedundantTestCase, self).setUp()
- def test_matched_rules(self):
+ @mock.patch('warnings.warn')
+ def test_matched_rules(self, mock_warn):
extensions = []
for name, opts in OPTS.items():
ext = stevedore.extension.Extension(name=name, entry_point=None,
@@ -587,7 +588,13 @@ class ListRedundantTestCase(base.PolicyBaseTestCase):
enforcer.register_default(
policy.RuleDefault('owner', 'project_id:%(project_id)s'))
# register a new opt
- enforcer.register_default(policy.RuleDefault('foo', 'role:foo'))
+ deprecated_rule = policy.DeprecatedRule('old_foo', 'role:bar')
+ enforcer.register_default(
+ policy.RuleDefault('foo', 'role:foo',
+ deprecated_rule=deprecated_rule,
+ deprecated_reason='reason',
+ deprecated_since='T')
+ )
# Mock out stevedore to return the configured enforcer
ext = stevedore.extension.Extension(name='testing', entry_point=None,
@@ -618,6 +625,9 @@ class ListRedundantTestCase(base.PolicyBaseTestCase):
self.assertEqual('"owner"', opt1[0])
self.assertEqual('"project_id:%(project_id)s"', opt1[1])
+ self.assertFalse(mock_warn.called,
+ 'Deprecation warnings not suppressed.')
+
class UpgradePolicyTestCase(base.PolicyBaseTestCase):
def setUp(self):
diff --git a/releasenotes/notes/list-redundant-deprecation-warnings-f84a06133efdaedd.yaml b/releasenotes/notes/list-redundant-deprecation-warnings-f84a06133efdaedd.yaml
new file mode 100644
index 0000000..5f321b2
--- /dev/null
+++ b/releasenotes/notes/list-redundant-deprecation-warnings-f84a06133efdaedd.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+ - |
+ Deprecated policy warnings are now suppressed in the
+ ``oslopolicy-list-redundant`` tool so that they don't overwhelm the
+ relevant output.