yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #73831
[Bug 1781976] Re: Issues with oslo.policy 1.38.0
Reviewed: https://review.openstack.org/582995
Committed: https://git.openstack.org/cgit/openstack/glance/commit/?id=3e47cbea340c067cefd2ab1e029dc1fca4f5e954
Submitter: Zuul
Branch: master
commit 3e47cbea340c067cefd2ab1e029dc1fca4f5e954
Author: Lance Bragstad <lbragstad@xxxxxxxxx>
Date: Mon Jul 16 16:18:03 2018 +0000
Use glance.context.RequestContext in tests
There were some recent changes to oslo.policy that include specific
type checks of the ``creds`` parameter passed to the ``enforce()``
method:
https://review.openstack.org/#/c/578995/
The above change allows consuming projects to pass instances
of oslo_context.context.RequestContext to the policy enforcer, as
opposed to building a dictionary instance from scratch multiple
different ways across projects.
The glance unit tests were failing with the new version of
oslo.policy (1.38.0) because they were passing in a Mock instance
which failed the new, more strict, type check.
This commit converts the setUp class of the tests to use an instance
of glance.context.RequestContext, which subclasses RequestContext
from oslo.context. It also sets the user_id and project_id attributes
of the context object to override authorization checks.
This should allow glance to pass with newer versions of oslo.policy.
Change-Id: I0a69bc9565d57fd6ad8484abc5fce0e8dd45f9f2
Closes-Bug: 1781976
** Changed in: glance
Status: New => Fix Released
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to Glance.
https://bugs.launchpad.net/bugs/1781976
Title:
Issues with oslo.policy 1.38.0
Status in Glance:
Fix Released
Bug description:
There was recently a few changes to oslo.policy that allow for more
flexibility when enforcing policy [0]. These changes were included in
the 1.38.0 release of oslo.policy, which is cause glance unit tests to
fail when updating the requirements for oslo.policy [1]
I was able to recreate this locally by:
1.) running glance unit tests
2.) installing oslo.policy 1.38.0 ($ .tox/py27/bin/pip install oslo.policy===1.38.0)
3.) Rerunning unit tests with the new version of oslo.policy
The following is a trace from a failing unit test in glance:
File "/opt/stack/glance/.tox/py27/local/lib/python2.7/site-packages/taskflow/engines/action_engine/engine.py", line 247, in run
for _state in self.run_iter(timeout=timeout):
File "/opt/stack/glance/.tox/py27/local/lib/python2.7/site-packages/taskflow/engines/action_engine/engine.py", line 328, in run_iter
self._change_state(states.FAILURE)
File "/opt/stack/glance/.tox/py27/local/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__
self.force_reraise()
File "/opt/stack/glance/.tox/py27/local/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise
six.reraise(self.type_, self.value, self.tb)
File "/opt/stack/glance/.tox/py27/local/lib/python2.7/site-packages/taskflow/engines/action_engine/engine.py", line 300, in run_iter
failure.Failure.reraise_if_any(memory.failures)
File "/opt/stack/glance/.tox/py27/local/lib/python2.7/site-packages/taskflow/types/failure.py", line 339, in reraise_if_any
failures[0].reraise()
File "/opt/stack/glance/.tox/py27/local/lib/python2.7/site-packages/taskflow/types/failure.py", line 346, in reraise
six.reraise(*self._exc_info)
File "/opt/stack/glance/.tox/py27/local/lib/python2.7/site-packages/taskflow/engines/action_engine/executor.py", line 72, in _revert_task
result = task.revert(**arguments)
File "glance/async/flows/base_import.py", line 82, in revert
image.delete()
File "glance/domain/proxy.py", line 186, in delete
self.base.delete()
File "glance/domain/proxy.py", line 186, in delete
self.base.delete()
File "glance/api/policy.py", line 171, in delete
self.policy.enforce(self.context, 'delete_image', dict(self.target))
File "glance/api/policy.py", line 68, in enforce
action=action)
File "/opt/stack/glance/.tox/py27/local/lib/python2.7/site-packages/oslo_policy/policy.py", line 835, in enforce
raise InvalidContextObject(msg)
oslo_policy.policy.InvalidContextObject: Invalid context object: Expected type oslo_context.context.RequestContext, dict, or the output of oslo_context.context.RequestContext.to_policy_values but got <class 'mock.mock.MagicMock'> instead.
[0] https://review.openstack.org/#/c/578995/
[1] https://review.openstack.org/#/c/582418/
To manage notifications about this bug go to:
https://bugs.launchpad.net/glance/+bug/1781976/+subscriptions
References