[CI] Fix gate - multiple fixes (Focal/Py38 and policy)

Suppress of policy deprecation warnings. oslo.policy logs the
deprecated policy warnings while loading the
policy rules. Flag to suppress the warning was set after load_rule()
was called. We do not need to log warnings for unit test where
every test initializes the policy and logs a warning.

Also use yaml format of policy file in unit test to avoid
more warnings for json file.

Bump a few l-c for Py38 testing, squashing parts of
https://review.opendev.org/744343

Fix unit tests compatibility with Py38, squashing parts of
https://review.opendev.org/748874

Change-Id: Ia54d29975347392cbb93c07969d7e3b48eca5d23
Co-Authored-By: Radosław Piliszek <radoslaw.piliszek@gmail.com>
This commit is contained in:
Ghanshyam Mann
2020-09-11 07:57:31 -05:00
committed by Radosław Piliszek
parent 112610abce
commit 233a61d1e0
7 changed files with 32 additions and 24 deletions

View File

@@ -31,10 +31,10 @@ Jinja2==2.10
jsonschema==3.2.0
keystoneauth1==3.4.0
keystonemiddleware==4.17.0
kombu==4.1.0
kombu==4.6.1
linecache2==1.0.0
Mako==1.0.7
MarkupSafe==1.0
MarkupSafe==1.1.1
microversion-parse==0.2.1
mox3==0.25.0
msgpack==0.5.6
@@ -48,7 +48,7 @@ oslo.cache==1.29.0
oslo.concurrency==3.26.0
oslo.config==5.2.0
oslo.context==2.19.2
oslo.db==4.27.0
oslo.db==4.44.0
oslo.i18n==3.15.3
oslo.log==3.36.0
oslo.messaging==5.29.0
@@ -67,7 +67,7 @@ pbr==2.0.0
pika-pool==0.1.3
pika==0.10.0
prettytable==0.7.2
psycopg2==2.7
psycopg2==2.8
pycadf==2.7.0
Pygments==2.2.0
pyinotify==0.9.6
@@ -81,7 +81,7 @@ python-mimeparse==1.6.0
python-novaclient==9.1.0
python-subunit==1.0.0
pytz==2018.3
PyYAML==3.12
PyYAML==3.13
repoze.lru==0.7
requests-mock==1.2.0
requests==2.18.4

View File

@@ -45,7 +45,8 @@ def reset():
_ENFORCER = None
def init(policy_file=None, rules=None, default_rule=None, use_conf=True):
def init(policy_file=None, rules=None, default_rule=None, use_conf=True,
suppress_deprecation_warnings=False):
"""Init an Enforcer class.
:param policy_file: Custom policy file to use, if none is specified,
@@ -55,6 +56,8 @@ def init(policy_file=None, rules=None, default_rule=None, use_conf=True):
:param default_rule: Default rule to use, CONF.default_rule will
be used if none is specified.
:param use_conf: Whether to load rules from config file.
:param suppress_deprecation_warnings: Whether to suppress the
deprecation warnings.
"""
global _ENFORCER
global saved_file_rules
@@ -64,6 +67,15 @@ def init(policy_file=None, rules=None, default_rule=None, use_conf=True):
rules=rules,
default_rule=default_rule,
use_conf=use_conf)
# NOTE(gmann): Explictly disable the warnings for policies
# changing their default check_str. During policy-defaults-refresh
# work, all the policy defaults have been changed and warning for
# each policy started filling the logs limit for various tool.
# Once we move to new defaults only world then we can enable these
# warning again.
_ENFORCER.suppress_default_change_warnings = True
if suppress_deprecation_warnings:
_ENFORCER.suppress_deprecation_warnings = True
register_rules(_ENFORCER)
_ENFORCER.load_rules()

View File

@@ -13,10 +13,10 @@
# under the License.
import os
import yaml
import fixtures
from oslo_policy import policy as oslo_policy
from oslo_serialization import jsonutils
import masakari.conf
from masakari.conf import paths
@@ -46,11 +46,11 @@ class RealPolicyFixture(fixtures.Fixture):
def setUp(self):
super(RealPolicyFixture, self).setUp()
# policy_file can be overridden by subclasses
self.policy_file = paths.state_path_def('etc/masakari/policy.json')
self.policy_file = paths.state_path_def('etc/masakari/policy.yaml')
self._prepare_policy()
CONF.set_override('policy_file', self.policy_file, group='oslo_policy')
masakari.policy.reset()
masakari.policy.init()
masakari.policy.init(suppress_deprecation_warnings=True)
self.addCleanup(masakari.policy.reset)
def set_rules(self, rules, overwrite=True):
@@ -68,13 +68,13 @@ class PolicyFixture(RealPolicyFixture):
"""
def _prepare_policy(self):
self.policy_dir = self.useFixture(fixtures.TempDir())
self.policy_file = os.path.join(self.policy_dir.path, 'policy.json')
self.policy_file = os.path.join(self.policy_dir.path, 'policy.yaml')
# load the fake_policy data and add the missing default rules.
policy_rules = jsonutils.loads(fake_policy.policy_data)
policy_rules = yaml.safe_load(fake_policy.policy_data)
with open(self.policy_file, 'w') as f:
jsonutils.dump(policy_rules, f)
yaml.dump(policy_rules, f)
CONF.set_override('policy_dirs', [], group='oslo_policy')
@@ -99,6 +99,6 @@ class RoleBasedPolicyFixture(RealPolicyFixture):
policy[rule.name] = 'role:%s' % self.role
self.policy_dir = self.useFixture(fixtures.TempDir())
self.policy_file = os.path.join(self.policy_dir.path, 'policy.json')
self.policy_file = os.path.join(self.policy_dir.path, 'policy.yaml')
with open(self.policy_file, 'w') as f:
jsonutils.dump(policy, f)
yaml.dump(policy, f)

View File

@@ -18,7 +18,6 @@ import re
import fixtures
from jsonschema import exceptions as jsonschema_exc
import sys
from masakari.api import api_version_request as api_version
from masakari.api import validation
@@ -269,10 +268,7 @@ class PatternPropertiesTestCase(APIValidationTestCase):
self.check_validation_error(self.post, body={'0123456789a': 'bar'},
expected_detail=details)
if sys.version[:3] in ['3.5', '3.6', '3.7']:
detail = "expected string or bytes-like object"
else:
detail = "expected string or buffer"
detail = "expected string or bytes-like object"
self.check_validation_error(self.post, body={None: 'bar'},
expected_detail=detail)

View File

@@ -49,7 +49,7 @@ class PolicyFileTestCase(test.NoDBTestCase):
# determine is_admin or not. As a side-effect, policy reset is
# needed here to flush existing policy cache.
policy.reset()
policy.init()
policy.init(suppress_deprecation_warnings=True)
rule = oslo_policy.RuleDefault('example:test', "")
policy._ENFORCER.register_defaults([rule])
@@ -84,7 +84,7 @@ class PolicyTestCase(test.NoDBTestCase):
"role:ADMIN or role:sysadmin"),
]
policy.reset()
policy.init()
policy.init(suppress_deprecation_warnings=True)
# before a policy rule can be used, its default has to be registered.
policy._ENFORCER.register_defaults(rules)
self.context = context.RequestContext('fake', 'fake', roles=['member'])
@@ -158,7 +158,7 @@ class PolicyTestCase(test.NoDBTestCase):
class IsAdminCheckTestCase(test.NoDBTestCase):
def setUp(self):
super(IsAdminCheckTestCase, self).setUp()
policy.init()
policy.init(suppress_deprecation_warnings=True)
def test_init_true(self):
check = policy.IsAdminCheck('is_admin', 'True')

View File

@@ -11,7 +11,7 @@ WebOb>=1.7.1 # MIT
microversion-parse>=0.2.1 # Apache-2.0
oslo.config>=5.2.0 # Apache-2.0
oslo.context>=2.19.2 # Apache-2.0
oslo.db>=4.27.0 # Apache-2.0
oslo.db>=4.44.0 # Apache-2.0
oslo.messaging>=5.29.0 # Apache-2.0
oslo.i18n>=3.15.3 # Apache-2.0
oslo.log>=3.36.0 # Apache-2.0

View File

@@ -7,7 +7,7 @@ hacking>=3.0.1,<3.1.0 # Apache-2.0
coverage!=4.4,>=4.0 # Apache-2.0
ddt>=1.0.1 # MIT
pep8>=1.5.7
psycopg2>=2.7 # LGPL/ZPL
psycopg2>=2.8 # LGPL/ZPL
PyMySQL>=0.7.6 # MIT License
python-subunit>=1.0.0 # Apache-2.0/BSD
openstacksdk>=0.35.0 # Apache-2.0