# Copyright (c) 2019 OpenStack Foundation. # 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. from oslo_serialization import jsonutils import six from fenix import context from fenix import exceptions def ctx_from_headers(headers): try: service_catalog = jsonutils.loads(headers['X-Service-Catalog']) except KeyError: raise exceptions.ServiceCatalogNotFound() except TypeError: raise exceptions.WrongFormat() if 'X-User-Id' in headers: user_id = headers['X-User-Id'] else: user_id = None if 'X-Project-Id' in headers: project_id = headers['X-Project-Id'] else: project_id = None if 'X-Auth-Token' in headers: auth_token = headers['X-Auth-Token'] else: auth_token = None if 'X-User-Name' in headers: user_name = headers['X-User-Name'] else: user_name = None if 'X-Project-Name' in headers: project_name = headers['X-Project-Name'] else: project_name = None if 'X-Project-Name' in headers: project_name = headers['X-Project-Name'] else: project_name = None if 'X-Roles' in headers: roles = list(map(six.text_type.strip, headers['X-Roles'].split(','))) else: roles = None return context.FenixContext( user_id=user_id, project_id=project_id, auth_token=auth_token, user_name=user_name, project_name=project_name, roles=roles, service_catalog=service_catalog )