Merge "Init local request context with user/project domain infos"

This commit is contained in:
Jenkins
2016-01-04 12:21:22 +00:00
committed by Gerrit Code Review
2 changed files with 35 additions and 18 deletions

View File

@@ -69,7 +69,8 @@ class RequestContext(context.RequestContext):
read_only=False, show_deleted=False,
overwrite=True, trust_id=None, trustor_user_id=None,
request_id=None, auth_token_info=None, region_name=None,
auth_plugin=None, trusts_auth_plugin=None, **kwargs):
auth_plugin=None, trusts_auth_plugin=None,
user_domain_id=None, project_domain_id=None, **kwargs):
"""Initialisation of the request context.
:param overwrite: Set to False to ensure that the greenthread local
@@ -83,7 +84,9 @@ class RequestContext(context.RequestContext):
is_admin=is_admin,
read_only=read_only,
show_deleted=show_deleted,
request_id=request_id)
request_id=request_id,
user_domain=user_domain_id,
project_domain=project_domain_id)
self.username = username
self.user_id = user_id
@@ -140,7 +143,9 @@ class RequestContext(context.RequestContext):
'request_id': self.request_id,
'show_deleted': self.show_deleted,
'region_name': self.region_name,
'user_identity': user_idt}
'user_identity': user_idt,
'user_domain_id': self.user_domain,
'project_domain_id': self.project_domain}
@classmethod
def from_dict(cls, values):
@@ -268,11 +273,14 @@ class ContextMiddleware(wsgi.Middleware):
aws_creds = headers.get('X-Auth-EC2-Creds')
user_id = headers.get('X-User-Id')
user_domain_id = headers.get('X_User_Domain_Id')
token = headers.get('X-Auth-Token')
tenant = headers.get('X-Project-Name')
tenant_id = headers.get('X-Project-Id')
project_domain_id = headers.get('X_Project_Domain_Id')
region_name = headers.get('X-Region-Name')
auth_url = headers.get('X-Auth-Url')
roles = headers.get('X-Roles')
if roles is not None:
roles = roles.split(',')
@@ -283,18 +291,21 @@ class ContextMiddleware(wsgi.Middleware):
except Exception:
raise exception.NotAuthenticated()
req.context = self.make_context(auth_token=token,
tenant=tenant, tenant_id=tenant_id,
aws_creds=aws_creds,
username=username,
user_id=user_id,
password=password,
auth_url=auth_url,
roles=roles,
request_id=req_id,
auth_token_info=token_info,
region_name=region_name,
auth_plugin=auth_plugin)
req.context = self.make_context(
auth_token=token,
tenant=tenant, tenant_id=tenant_id,
aws_creds=aws_creds,
username=username,
user_id=user_id,
password=password,
auth_url=auth_url,
roles=roles,
request_id=req_id,
auth_token_info=token_info,
region_name=region_name,
auth_plugin=auth_plugin,
user_domain_id=user_domain_id,
project_domain_id=project_domain_id)
def ContextMiddleware_filter_factory(global_conf, **local_conf):

View File

@@ -46,7 +46,9 @@ class TestRequestContext(common.HeatTestCase):
'auth_url': 'http://xyz',
'aws_creds': 'blah',
'region_name': 'RegionOne',
'user_identity': 'fooUser 456tenant'}
'user_identity': 'fooUser 456tenant',
'user_domain_id': None,
'project_domain_id': None}
super(TestRequestContext, self).setUp()
@@ -67,7 +69,9 @@ class TestRequestContext(common.HeatTestCase):
trustor_user_id=self.ctx.get('trustor_user_id'),
trust_id=self.ctx.get('trust_id'),
user=self.ctx.get('user'),
region_name=self.ctx.get('region_name'))
region_name=self.ctx.get('region_name'),
user_domain_id=self.ctx.get('user_domain'),
project_domain_id=self.ctx.get('project_domain'))
ctx_dict = ctx.to_dict()
del(ctx_dict['request_id'])
self.assertEqual(self.ctx, ctx_dict)
@@ -82,7 +86,9 @@ class TestRequestContext(common.HeatTestCase):
ctx = context.RequestContext.from_dict(self.ctx)
for k in self.ctx:
if k == 'user_identity':
if (k == 'user_identity' or
k == 'user_domain_id' or
k == 'project_domain_id'):
continue
self.assertEqual(self.ctx.get(k), ctx.to_dict().get(k))
override = '%s_override' % k