Python oslo_middleware.request_id.ENV_REQUEST_ID Examples
The following are 14
code examples of oslo_middleware.request_id.ENV_REQUEST_ID().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
oslo_middleware.request_id
, or try the search function
.
Example #1
Source File: hooks.py From zun with Apache License 2.0 | 6 votes |
def before(self, state): headers = state.request.headers user_name = headers.get('X-User-Name') user_id = headers.get('X-User-Id') project = headers.get('X-Project-Name') project_id = headers.get('X-Project-Id') domain_id = headers.get('X-User-Domain-Id') domain_name = headers.get('X-User-Domain-Name') auth_token = headers.get('X-Auth-Token') roles = headers.get('X-Roles', '').split(',') auth_token_info = state.request.environ.get('keystone.token_info') req_id = state.request.environ.get(request_id.ENV_REQUEST_ID) state.request.context = context.make_context( auth_token=auth_token, auth_token_info=auth_token_info, request_id=req_id, user_name=user_name, user_id=user_id, project_name=project, project_id=project_id, domain_id=domain_id, domain_name=domain_name, roles=roles)
Example #2
Source File: test_request_id.py From oslo.middleware with Apache License 2.0 | 6 votes |
def test_compat_headers(self): """Test that compat headers are set Compat headers might exist on a super class to support previous API contracts. This ensures that you can set that to a list of headers and those values are the same as the request_id. """ @webob.dec.wsgify def application(req): return req.environ[request_id.ENV_REQUEST_ID] app = AltHeader(application) req = webob.Request.blank('/test') res = req.get_response(app) res_req_id = res.headers.get(request_id.HTTP_RESP_HEADER_REQUEST_ID) self.assertEqual(res.headers.get("x-compute-req-id"), res_req_id) self.assertEqual(res.headers.get("x-silly-id"), res_req_id)
Example #3
Source File: test_context.py From senlin with Apache License 2.0 | 6 votes |
def test_context_middleware_with_requestid(self): avr = vr.APIVersionRequest('1.0') middleware = context.ContextMiddleware(None) request = webob.Request.blank('/clusters', headers=self.headers, environ=self.environ) req_id = 'req-5a63f0d7-1b69-447b-b621-4ea87cc7186d' request.environ[request_id.ENV_REQUEST_ID] = req_id request.version_request = avr if self.expected_exception: self.assertRaises( self.expected_exception, middleware.process_request, request) else: self.assertIsNone(middleware.process_request(request)) ctx = request.context.to_dict() for k, v in self.context_dict.items(): self.assertEqual(v, ctx[k], 'Key %s values do not match' % k) self.assertEqual( ctx.get('request_id'), req_id, 'Key request_id values do not match')
Example #4
Source File: middleware.py From designate with Apache License 2.0 | 5 votes |
def make_context(self, request, *args, **kwargs): req_id = request.environ.get(request_id.ENV_REQUEST_ID) kwargs.setdefault('request_id', req_id) ctxt = context.DesignateContext(*args, **kwargs) try: self._extract_sudo(ctxt, request) self._extract_all_projects(ctxt, request) self._extract_edit_managed_records(ctxt, request) self._extract_dns_hide_counts(ctxt, request) self._extract_client_addr(ctxt, request) finally: request.environ['context'] = ctxt return ctxt
Example #5
Source File: auth.py From masakari with Apache License 2.0 | 5 votes |
def __call__(self, req): user_id = req.headers.get('X_USER', 'admin') user_id = req.headers.get('X_USER_ID', user_id) project_name = req.headers.get('X_TENANT_NAME') user_name = req.headers.get('X_USER_NAME') req_id = req.environ.get(request_id.ENV_REQUEST_ID) remote_address = req.remote_addr if CONF.use_forwarded_for: remote_address = req.headers.get('X-Forwarded-For', remote_address) service_catalog = None if req.headers.get('X_SERVICE_CATALOG') is not None: try: catalog_header = req.headers.get('X_SERVICE_CATALOG') service_catalog = jsonutils.loads(catalog_header) except ValueError: raise webob.exc.HTTPInternalServerError( _('Invalid service catalog json.')) ctx = context.RequestContext(user_id, user_name=user_name, project_name=project_name, remote_address=remote_address, service_catalog=service_catalog, request_id=req_id, is_admin=True) req.environ['masakari.context'] = ctx return self.application
Example #6
Source File: test_auth.py From masakari with Apache License 2.0 | 5 votes |
def test_request_id_extracted_from_env(self): req_id = 'dummy-request-id' self.request.headers['X_PROJECT_ID'] = 'testtenantid' self.request.headers['X_USER_ID'] = 'testuserid' self.request.environ[request_id.ENV_REQUEST_ID] = req_id self.request.get_response(self.middleware) self.assertEqual(req_id, self.context.request_id)
Example #7
Source File: test_auth.py From masakari with Apache License 2.0 | 5 votes |
def test_request_id_extracted_from_env(self): req_id = 'dummy-request-id' self.request.headers['X_PROJECT_ID'] = 'testtenantid' self.request.headers['X_USER_ID'] = 'testuserid' self.request.environ[request_id.ENV_REQUEST_ID] = req_id self.request.get_response(self.middleware) self.assertEqual(req_id, self.context.request_id)
Example #8
Source File: test_auth.py From tacker with Apache License 2.0 | 5 votes |
def test_request_id_extracted_from_env(self): req_id = 'dummy-request-id' self.request.headers['X_PROJECT_ID'] = 'testtenantid' self.request.headers['X_USER_ID'] = 'testuserid' self.request.environ[request_id.ENV_REQUEST_ID] = req_id self.request.get_response(self.middleware) self.assertEqual(req_id, self.context.request_id)
Example #9
Source File: test_request_id.py From oslo.middleware with Apache License 2.0 | 5 votes |
def test_generate_request_id(self): @webob.dec.wsgify def application(req): return req.environ[request_id.ENV_REQUEST_ID] app = request_id.RequestId(application) req = webob.Request.blank('/test') res = req.get_response(app) res_req_id = res.headers.get(request_id.HTTP_RESP_HEADER_REQUEST_ID) if isinstance(res_req_id, bytes): res_req_id = res_req_id.decode('utf-8') self.assertThat(res_req_id, matchers.StartsWith('req-')) # request-id in request environ is returned as response body self.assertEqual(res.body.decode('utf-8'), res_req_id)
Example #10
Source File: test_auth.py From karbor with Apache License 2.0 | 5 votes |
def test_request_id_extracted_from_env(self): req_id = 'dummy-request-id' self.request.headers['X_PROJECT_ID'] = 'testtenantid' self.request.headers['X_USER_ID'] = 'testuserid' self.request.environ[request_id.ENV_REQUEST_ID] = req_id self.request.get_response(self.middleware) self.assertEqual(req_id, self.context.request_id)
Example #11
Source File: auth.py From vdi-broker with Apache License 2.0 | 4 votes |
def __call__(self, req): user = req.headers.get('X_USER') user = req.headers.get('X_USER_ID', user) if user is None: LOG.debug("Neither X_USER_ID nor X_USER found in request") return webob.exc.HTTPUnauthorized() # get the roles roles = [r.strip() for r in req.headers.get('X_ROLE', '').split(',')] if 'X_TENANT_ID' in req.headers: # This is the new header since Keystone went to ID/Name tenant = req.headers['X_TENANT_ID'] else: # This is for legacy compatibility tenant = req.headers['X_TENANT'] project_name = req.headers.get('X_TENANT_NAME') project_domain_name = req.headers.get('X-Project-Domain-Name') user_domain_name = req.headers.get('X-User-Domain-Name') req_id = req.environ.get(request_id.ENV_REQUEST_ID) # TODO(alexpilotti): Check why it's not str if isinstance(req_id, bytes): req_id = req_id.decode() # Get the auth token auth_token = req.headers.get('X_AUTH_TOKEN') # Build a context, including the auth_token... remote_address = req.remote_addr service_catalog = None if req.headers.get('X_SERVICE_CATALOG') is not None: try: catalog_header = req.headers.get('X_SERVICE_CATALOG') service_catalog = jsonutils.loads(catalog_header) except ValueError: raise webob.exc.HTTPInternalServerError( explanation=_('Invalid service catalog json.')) ctx = context.RequestContext(user, tenant, project_name=project_name, project_domain=project_domain_name, user_domain=user_domain_name, roles=roles, auth_token=auth_token, remote_address=remote_address, service_catalog=service_catalog, request_id=req_id) req.environ['vdibroker.context'] = ctx return self.application
Example #12
Source File: auth.py From masakari with Apache License 2.0 | 4 votes |
def __call__(self, req): user_id = req.headers.get('X_USER') user_id = req.headers.get('X_USER_ID', user_id) if user_id is None: LOG.debug("Neither X_USER_ID nor X_USER found in request") return webob.exc.HTTPUnauthorized() roles = self._get_roles(req) if 'X_TENANT_ID' in req.headers: # This is the new header since Keystone went to ID/Name project_id = req.headers['X_TENANT_ID'] else: # This is for legacy compatibility project_id = req.headers['X_TENANT'] project_name = req.headers.get('X_TENANT_NAME') user_name = req.headers.get('X_USER_NAME') req_id = req.environ.get(request_id.ENV_REQUEST_ID) # Get the auth token auth_token = req.headers.get('X_AUTH_TOKEN', req.headers.get('X_STORAGE_TOKEN')) # Build a context, including the auth_token... remote_address = req.remote_addr if CONF.use_forwarded_for: remote_address = req.headers.get('X-Forwarded-For', remote_address) service_catalog = None if req.headers.get('X_SERVICE_CATALOG') is not None: try: catalog_header = req.headers.get('X_SERVICE_CATALOG') service_catalog = jsonutils.loads(catalog_header) except ValueError: raise webob.exc.HTTPInternalServerError( _('Invalid service catalog json.')) # NOTE: This is a full auth plugin set by auth_token # middleware in newer versions. user_auth_plugin = req.environ.get('keystone.token_auth') ctx = context.RequestContext(user_id, project_id, user_name=user_name, project_name=project_name, roles=roles, auth_token=auth_token, remote_address=remote_address, service_catalog=service_catalog, request_id=req_id, user_auth_plugin=user_auth_plugin) req.environ['masakari.context'] = ctx return self.application
Example #13
Source File: auth.py From coriolis with GNU Affero General Public License v3.0 | 4 votes |
def __call__(self, req): user = req.headers.get('X_USER') user = req.headers.get('X_USER_ID', user) if user is None: LOG.debug("Neither X_USER_ID nor X_USER found in request") return webob.exc.HTTPUnauthorized() # get the roles roles = [r.strip() for r in req.headers.get('X_ROLE', '').split(',')] if 'X_TENANT_ID' in req.headers: # This is the new header since Keystone went to ID/Name tenant = req.headers['X_TENANT_ID'] else: # This is for legacy compatibility tenant = req.headers['X_TENANT'] project_name = req.headers.get('X_TENANT_NAME') project_domain_name = req.headers.get('X-Project-Domain-Name') user_domain_name = req.headers.get('X-User-Domain-Name') req_id = req.environ.get(request_id.ENV_REQUEST_ID) # TODO(alexpilotti): Check why it's not str if isinstance(req_id, bytes): req_id = req_id.decode() # Get the auth token auth_token = req.headers.get('X_AUTH_TOKEN') # Build a context, including the auth_token... remote_address = req.remote_addr service_catalog = None if req.headers.get('X_SERVICE_CATALOG') is not None: try: catalog_header = req.headers.get('X_SERVICE_CATALOG') service_catalog = jsonutils.loads(catalog_header) except ValueError: raise webob.exc.HTTPInternalServerError( explanation=_('Invalid service catalog json.')) ctx = context.RequestContext(user, tenant, project_name=project_name, project_domain_name=project_domain_name, user_domain_name=user_domain_name, roles=roles, auth_token=auth_token, remote_address=remote_address, service_catalog=service_catalog, request_id=req_id) req.environ['coriolis.context'] = ctx return self.application
Example #14
Source File: auth.py From karbor with Apache License 2.0 | 4 votes |
def __call__(self, req): headers = req.headers environ = req.environ user_id = headers.get('X_USER_ID') or headers.get('X_USER') if user_id is None: LOG.debug("Neither X_USER_ID nor X_USER found in request") return webob.exc.HTTPUnauthorized() # get the roles roles = [r.strip() for r in headers.get('X_ROLE', '').split(',')] if 'X_TENANT_ID' in headers: # This is the new header since Keystone went to ID/Name project_id = headers['X_TENANT_ID'] else: # This is for legacy compatibility project_id = headers['X_TENANT'] project_name = headers.get('X_TENANT_NAME') req_id = environ.get(request_id.ENV_REQUEST_ID) # Get the auth token auth_token = headers.get('X_AUTH_TOKEN', headers.get('X_STORAGE_TOKEN')) # Build a context, including the auth_token... remote_address = req.remote_addr auth_token_info = environ.get('keystone.token_info') service_catalog = None if headers.get('X_SERVICE_CATALOG') is not None: try: catalog_header = headers.get('X_SERVICE_CATALOG') service_catalog = jsonutils.loads(catalog_header) except ValueError: raise webob.exc.HTTPInternalServerError( explanation=_('Invalid service catalog json.')) if CONF.use_forwarded_for: remote_address = headers.get('X-Forwarded-For', remote_address) ctx = context.RequestContext(user_id, project_id, project_name=project_name, roles=roles, auth_token=auth_token, remote_address=remote_address, service_catalog=service_catalog, request_id=req_id, auth_token_info=auth_token_info) environ['karbor.context'] = ctx return self.application