deb-barbican/barbican/context.py
Jamie Lennox 6c814fefbc Don't inspect oslo.context
When creating an oslo.context we inspected the __init__ string to figure
out if roles were part of the context. This was added in oslo.context
2.2 and there needed to be compatibility between old and new.

Now that requirements specify oslo.context >= 2.9 we don't need this
clause any more, and it is causing release issues with older versions of
positional.

Remove the inspection and rely on newer versions of oslo.context.

Closes-Bug: #1620963
Change-Id: I2fcb4f1718ae5e5b50e26d9dee0e0df2f1e6cf72
2016-09-13 10:49:20 +10:00

54 lines
1.8 KiB
Python

# Copyright 2011-2012 OpenStack LLC.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import oslo_context
from oslo_policy import policy
from barbican.common import config
CONF = config.CONF
class RequestContext(oslo_context.context.RequestContext):
"""User security context object
Stores information about the security context under which the user
accesses the system, as well as additional request information.
"""
def __init__(self, policy_enforcer=None, project=None, **kwargs):
# prefer usage of 'project' instead of 'tenant'
if project:
kwargs['tenant'] = project
self.project = project
self.policy_enforcer = policy_enforcer or policy.Enforcer(CONF)
super(RequestContext, self).__init__(**kwargs)
def to_dict(self):
out_dict = super(RequestContext, self).to_dict()
out_dict['roles'] = self.roles
# NOTE(jaosorior): For now, the oslo_context library uses 'tenant'
# instead of project. But in case this changes, this will still issue
# the dict we expect, which would contain 'project'.
if out_dict.get('tenant'):
out_dict['project'] = out_dict['tenant']
out_dict.pop('tenant')
return out_dict
@classmethod
def from_dict(cls, values):
return cls(**values)