[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:

committed by
Radosław Piliszek

parent
112610abce
commit
233a61d1e0
@@ -31,10 +31,10 @@ Jinja2==2.10
|
|||||||
jsonschema==3.2.0
|
jsonschema==3.2.0
|
||||||
keystoneauth1==3.4.0
|
keystoneauth1==3.4.0
|
||||||
keystonemiddleware==4.17.0
|
keystonemiddleware==4.17.0
|
||||||
kombu==4.1.0
|
kombu==4.6.1
|
||||||
linecache2==1.0.0
|
linecache2==1.0.0
|
||||||
Mako==1.0.7
|
Mako==1.0.7
|
||||||
MarkupSafe==1.0
|
MarkupSafe==1.1.1
|
||||||
microversion-parse==0.2.1
|
microversion-parse==0.2.1
|
||||||
mox3==0.25.0
|
mox3==0.25.0
|
||||||
msgpack==0.5.6
|
msgpack==0.5.6
|
||||||
@@ -48,7 +48,7 @@ oslo.cache==1.29.0
|
|||||||
oslo.concurrency==3.26.0
|
oslo.concurrency==3.26.0
|
||||||
oslo.config==5.2.0
|
oslo.config==5.2.0
|
||||||
oslo.context==2.19.2
|
oslo.context==2.19.2
|
||||||
oslo.db==4.27.0
|
oslo.db==4.44.0
|
||||||
oslo.i18n==3.15.3
|
oslo.i18n==3.15.3
|
||||||
oslo.log==3.36.0
|
oslo.log==3.36.0
|
||||||
oslo.messaging==5.29.0
|
oslo.messaging==5.29.0
|
||||||
@@ -67,7 +67,7 @@ pbr==2.0.0
|
|||||||
pika-pool==0.1.3
|
pika-pool==0.1.3
|
||||||
pika==0.10.0
|
pika==0.10.0
|
||||||
prettytable==0.7.2
|
prettytable==0.7.2
|
||||||
psycopg2==2.7
|
psycopg2==2.8
|
||||||
pycadf==2.7.0
|
pycadf==2.7.0
|
||||||
Pygments==2.2.0
|
Pygments==2.2.0
|
||||||
pyinotify==0.9.6
|
pyinotify==0.9.6
|
||||||
@@ -81,7 +81,7 @@ python-mimeparse==1.6.0
|
|||||||
python-novaclient==9.1.0
|
python-novaclient==9.1.0
|
||||||
python-subunit==1.0.0
|
python-subunit==1.0.0
|
||||||
pytz==2018.3
|
pytz==2018.3
|
||||||
PyYAML==3.12
|
PyYAML==3.13
|
||||||
repoze.lru==0.7
|
repoze.lru==0.7
|
||||||
requests-mock==1.2.0
|
requests-mock==1.2.0
|
||||||
requests==2.18.4
|
requests==2.18.4
|
||||||
|
@@ -45,7 +45,8 @@ def reset():
|
|||||||
_ENFORCER = None
|
_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.
|
"""Init an Enforcer class.
|
||||||
|
|
||||||
:param policy_file: Custom policy file to use, if none is specified,
|
: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
|
:param default_rule: Default rule to use, CONF.default_rule will
|
||||||
be used if none is specified.
|
be used if none is specified.
|
||||||
:param use_conf: Whether to load rules from config file.
|
:param use_conf: Whether to load rules from config file.
|
||||||
|
:param suppress_deprecation_warnings: Whether to suppress the
|
||||||
|
deprecation warnings.
|
||||||
"""
|
"""
|
||||||
global _ENFORCER
|
global _ENFORCER
|
||||||
global saved_file_rules
|
global saved_file_rules
|
||||||
@@ -64,6 +67,15 @@ def init(policy_file=None, rules=None, default_rule=None, use_conf=True):
|
|||||||
rules=rules,
|
rules=rules,
|
||||||
default_rule=default_rule,
|
default_rule=default_rule,
|
||||||
use_conf=use_conf)
|
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)
|
register_rules(_ENFORCER)
|
||||||
_ENFORCER.load_rules()
|
_ENFORCER.load_rules()
|
||||||
|
|
||||||
|
@@ -13,10 +13,10 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import yaml
|
||||||
|
|
||||||
import fixtures
|
import fixtures
|
||||||
from oslo_policy import policy as oslo_policy
|
from oslo_policy import policy as oslo_policy
|
||||||
from oslo_serialization import jsonutils
|
|
||||||
|
|
||||||
import masakari.conf
|
import masakari.conf
|
||||||
from masakari.conf import paths
|
from masakari.conf import paths
|
||||||
@@ -46,11 +46,11 @@ class RealPolicyFixture(fixtures.Fixture):
|
|||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(RealPolicyFixture, self).setUp()
|
super(RealPolicyFixture, self).setUp()
|
||||||
# policy_file can be overridden by subclasses
|
# 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()
|
self._prepare_policy()
|
||||||
CONF.set_override('policy_file', self.policy_file, group='oslo_policy')
|
CONF.set_override('policy_file', self.policy_file, group='oslo_policy')
|
||||||
masakari.policy.reset()
|
masakari.policy.reset()
|
||||||
masakari.policy.init()
|
masakari.policy.init(suppress_deprecation_warnings=True)
|
||||||
self.addCleanup(masakari.policy.reset)
|
self.addCleanup(masakari.policy.reset)
|
||||||
|
|
||||||
def set_rules(self, rules, overwrite=True):
|
def set_rules(self, rules, overwrite=True):
|
||||||
@@ -68,13 +68,13 @@ class PolicyFixture(RealPolicyFixture):
|
|||||||
"""
|
"""
|
||||||
def _prepare_policy(self):
|
def _prepare_policy(self):
|
||||||
self.policy_dir = self.useFixture(fixtures.TempDir())
|
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.
|
# 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:
|
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')
|
CONF.set_override('policy_dirs', [], group='oslo_policy')
|
||||||
|
|
||||||
|
|
||||||
@@ -99,6 +99,6 @@ class RoleBasedPolicyFixture(RealPolicyFixture):
|
|||||||
policy[rule.name] = 'role:%s' % self.role
|
policy[rule.name] = 'role:%s' % self.role
|
||||||
|
|
||||||
self.policy_dir = self.useFixture(fixtures.TempDir())
|
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:
|
with open(self.policy_file, 'w') as f:
|
||||||
jsonutils.dump(policy, f)
|
yaml.dump(policy, f)
|
||||||
|
@@ -18,7 +18,6 @@ import re
|
|||||||
|
|
||||||
import fixtures
|
import fixtures
|
||||||
from jsonschema import exceptions as jsonschema_exc
|
from jsonschema import exceptions as jsonschema_exc
|
||||||
import sys
|
|
||||||
|
|
||||||
from masakari.api import api_version_request as api_version
|
from masakari.api import api_version_request as api_version
|
||||||
from masakari.api import validation
|
from masakari.api import validation
|
||||||
@@ -269,10 +268,7 @@ class PatternPropertiesTestCase(APIValidationTestCase):
|
|||||||
self.check_validation_error(self.post, body={'0123456789a': 'bar'},
|
self.check_validation_error(self.post, body={'0123456789a': 'bar'},
|
||||||
expected_detail=details)
|
expected_detail=details)
|
||||||
|
|
||||||
if sys.version[:3] in ['3.5', '3.6', '3.7']:
|
|
||||||
detail = "expected string or bytes-like object"
|
detail = "expected string or bytes-like object"
|
||||||
else:
|
|
||||||
detail = "expected string or buffer"
|
|
||||||
self.check_validation_error(self.post, body={None: 'bar'},
|
self.check_validation_error(self.post, body={None: 'bar'},
|
||||||
expected_detail=detail)
|
expected_detail=detail)
|
||||||
|
|
||||||
|
@@ -49,7 +49,7 @@ class PolicyFileTestCase(test.NoDBTestCase):
|
|||||||
# determine is_admin or not. As a side-effect, policy reset is
|
# determine is_admin or not. As a side-effect, policy reset is
|
||||||
# needed here to flush existing policy cache.
|
# needed here to flush existing policy cache.
|
||||||
policy.reset()
|
policy.reset()
|
||||||
policy.init()
|
policy.init(suppress_deprecation_warnings=True)
|
||||||
rule = oslo_policy.RuleDefault('example:test', "")
|
rule = oslo_policy.RuleDefault('example:test', "")
|
||||||
policy._ENFORCER.register_defaults([rule])
|
policy._ENFORCER.register_defaults([rule])
|
||||||
|
|
||||||
@@ -84,7 +84,7 @@ class PolicyTestCase(test.NoDBTestCase):
|
|||||||
"role:ADMIN or role:sysadmin"),
|
"role:ADMIN or role:sysadmin"),
|
||||||
]
|
]
|
||||||
policy.reset()
|
policy.reset()
|
||||||
policy.init()
|
policy.init(suppress_deprecation_warnings=True)
|
||||||
# before a policy rule can be used, its default has to be registered.
|
# before a policy rule can be used, its default has to be registered.
|
||||||
policy._ENFORCER.register_defaults(rules)
|
policy._ENFORCER.register_defaults(rules)
|
||||||
self.context = context.RequestContext('fake', 'fake', roles=['member'])
|
self.context = context.RequestContext('fake', 'fake', roles=['member'])
|
||||||
@@ -158,7 +158,7 @@ class PolicyTestCase(test.NoDBTestCase):
|
|||||||
class IsAdminCheckTestCase(test.NoDBTestCase):
|
class IsAdminCheckTestCase(test.NoDBTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(IsAdminCheckTestCase, self).setUp()
|
super(IsAdminCheckTestCase, self).setUp()
|
||||||
policy.init()
|
policy.init(suppress_deprecation_warnings=True)
|
||||||
|
|
||||||
def test_init_true(self):
|
def test_init_true(self):
|
||||||
check = policy.IsAdminCheck('is_admin', 'True')
|
check = policy.IsAdminCheck('is_admin', 'True')
|
||||||
|
@@ -11,7 +11,7 @@ WebOb>=1.7.1 # MIT
|
|||||||
microversion-parse>=0.2.1 # Apache-2.0
|
microversion-parse>=0.2.1 # Apache-2.0
|
||||||
oslo.config>=5.2.0 # Apache-2.0
|
oslo.config>=5.2.0 # Apache-2.0
|
||||||
oslo.context>=2.19.2 # 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.messaging>=5.29.0 # Apache-2.0
|
||||||
oslo.i18n>=3.15.3 # Apache-2.0
|
oslo.i18n>=3.15.3 # Apache-2.0
|
||||||
oslo.log>=3.36.0 # Apache-2.0
|
oslo.log>=3.36.0 # Apache-2.0
|
||||||
|
@@ -7,7 +7,7 @@ hacking>=3.0.1,<3.1.0 # Apache-2.0
|
|||||||
coverage!=4.4,>=4.0 # Apache-2.0
|
coverage!=4.4,>=4.0 # Apache-2.0
|
||||||
ddt>=1.0.1 # MIT
|
ddt>=1.0.1 # MIT
|
||||||
pep8>=1.5.7
|
pep8>=1.5.7
|
||||||
psycopg2>=2.7 # LGPL/ZPL
|
psycopg2>=2.8 # LGPL/ZPL
|
||||||
PyMySQL>=0.7.6 # MIT License
|
PyMySQL>=0.7.6 # MIT License
|
||||||
python-subunit>=1.0.0 # Apache-2.0/BSD
|
python-subunit>=1.0.0 # Apache-2.0/BSD
|
||||||
openstacksdk>=0.35.0 # Apache-2.0
|
openstacksdk>=0.35.0 # Apache-2.0
|
||||||
|
Reference in New Issue
Block a user