summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--oslo_policy/generator.py34
-rw-r--r--oslo_policy/tests/test_generator.py20
2 files changed, 25 insertions, 29 deletions
diff --git a/oslo_policy/generator.py b/oslo_policy/generator.py
index a35acae..244de03 100644
--- a/oslo_policy/generator.py
+++ b/oslo_policy/generator.py
@@ -186,12 +186,13 @@ def _format_rule_default_yaml(default, include_help=True, comment_rule=True,
'# Intended scope(s): ' + ', '.join(default.scope_types) + '\n'
)
comment = '#' if comment_rule else ''
- text = ('%(help)s\n%(op)s%(scope)s%(comment)s%(text)s\n' %
- {'help': _format_help_text(default.description),
- 'op': op,
+ text = ('%(op)s%(scope)s%(comment)s%(text)s\n' %
+ {'op': op,
'scope': intended_scope,
'comment': comment,
'text': text})
+ if default.description:
+ text = _format_help_text(default.description) + '\n' + text
if add_deprecated_rules and default.deprecated_for_removal:
text = (
@@ -206,29 +207,24 @@ def _format_rule_default_yaml(default, include_help=True, comment_rule=True,
# This issues a deprecation warning but aliases the old policy name
# with the new policy name for compatibility.
deprecated_text = (
- 'DEPRECATED\n"%(old_name)s":"%(old_check_str)s" has been '
- 'deprecated since %(since)s in favor of '
- '"%(name)s":"%(check_str)s".\n%(reason)s'
+ '"%(old_name)s":"%(old_check_str)s" has been deprecated '
+ 'since %(since)s in favor of "%(name)s":"%(check_str)s".'
) % {'old_name': default.deprecated_rule.name,
'old_check_str': default.deprecated_rule.check_str,
'since': default.deprecated_since,
'name': default.name,
'check_str': default.check_str,
- 'reason': default.deprecated_reason}
+ }
+ text = ('%(text)s# DEPRECATED\n%(deprecated_text)s\n%(reason)s\n' %
+ {'text': text,
+ 'reason': _format_help_text(default.deprecated_reason),
+ 'deprecated_text': _format_help_text(deprecated_text)})
if default.name != default.deprecated_rule.name:
- text = (
- '%(text)s%(deprecated_text)s\n"%(old_name)s": "rule:%(name)s"'
- '\n'
- ) % {'text': text,
- 'deprecated_text': _format_help_text(deprecated_text),
- 'old_name': default.deprecated_rule.name,
- 'name': default.name}
- else:
- text = (
- '%(text)s%(deprecated_text)s\n'
- ) % {'text': text,
- 'deprecated_text': _format_help_text(deprecated_text)}
+ text += ('"%(old_name)s": "rule:%(name)s"\n' %
+ {'old_name': default.deprecated_rule.name,
+ 'name': default.name})
+ text += '\n'
return text
diff --git a/oslo_policy/tests/test_generator.py b/oslo_policy/tests/test_generator.py
index 91ad901..2835536 100644
--- a/oslo_policy/tests/test_generator.py
+++ b/oslo_policy/tests/test_generator.py
@@ -98,10 +98,8 @@ class GenerateSampleYAMLTestCase(base.PolicyBaseTestCase):
# POST /test/
#"owner": "project_id:%(project_id)s"
-#
#"shared": "field:networks:shared=True"
-#
#"admin_or_owner": "rule:admin or rule:owner"
'''
@@ -137,10 +135,8 @@ class GenerateSampleYAMLTestCase(base.PolicyBaseTestCase):
# POST /test/
#"owner": "project_id:%(project_id)s"
-#
#"shared": "field:networks:shared=True"
-#
#"admin_or_owner": "rule:admin or rule:owner"
'''
@@ -223,10 +219,12 @@ class GenerateSampleYAMLTestCase(base.PolicyBaseTestCase):
expected = '''# Create a bar.
#"foo:create_bar": "role:fizz"
-# DEPRECATED "foo:post_bar":"role:fizz" has been deprecated since N in
-# favor of "foo:create_bar":"role:fizz". foo:post_bar is being removed
-# in favor of foo:create_bar
+# DEPRECATED
+# "foo:post_bar":"role:fizz" has been deprecated since N in favor of
+# "foo:create_bar":"role:fizz".
+# foo:post_bar is being removed in favor of foo:create_bar
"foo:post_bar": "rule:foo:create_bar"
+
'''
stdout = self._capture_stdout()
with mock.patch('stevedore.named.NamedExtensionManager',
@@ -267,9 +265,11 @@ class GenerateSampleYAMLTestCase(base.PolicyBaseTestCase):
expected = '''# Create a bar.
#"foo:create_bar": "role:fizz"
-# DEPRECATED "foo:create_bar":"role:old" has been deprecated since N
-# in favor of "foo:create_bar":"role:fizz". role:fizz is a more sane
-# default for foo:create_bar
+# DEPRECATED
+# "foo:create_bar":"role:old" has been deprecated since N in favor of
+# "foo:create_bar":"role:fizz".
+# role:fizz is a more sane default for foo:create_bar
+
'''
stdout = self._capture_stdout()
with mock.patch('stevedore.named.NamedExtensionManager',