def _application(self, environment, start_response): """WSGI application for conductor JSON RPC.""" request = webob.Request(environment) if request.method != 'POST': body = { 'error': { 'code': 405, 'message': _('Only POST method can be used') } } return webob.Response(status_code=405, json_body=body)(environment, start_response) if json_rpc.require_authentication(): roles = (request.headers.get('X-Roles') or '').split(',') if 'admin' not in roles: LOG.debug( 'Roles %s do not contain "admin", rejecting ' 'request', roles) body = {'error': {'code': 403, 'message': _('Forbidden')}} return webob.Response(status_code=403, json_body=body)(environment, start_response) result = self._call(request) if result is not None: response = webob.Response(content_type='application/json', charset='UTF-8', json_body=result) else: response = webob.Response(status_code=204) return response(environment, start_response)
def _get_session(): global _SESSION if _SESSION is None: if json_rpc.require_authentication(): auth = keystone.get_auth('json_rpc') else: auth = None _SESSION = keystone.get_session('json_rpc', auth=auth) _SESSION.headers = {'Content-Type': 'application/json'} return _SESSION
def __init__(self, manager, serializer): self.manager = manager self.serializer = serializer self._method_map = _build_method_map(manager) if json_rpc.require_authentication(): conf = dict(CONF.keystone_authtoken) app = auth_token.AuthProtocol(self._application, conf) else: app = self._application self.server = wsgi.Server(CONF, 'ironic-json-rpc', app, host=CONF.json_rpc.host_ip, port=CONF.json_rpc.port, use_ssl=CONF.json_rpc.use_ssl)
def _get_session(): global _SESSION if _SESSION is None: if json_rpc.require_authentication(): auth = keystone.get_auth('json_rpc') else: auth = None _SESSION = keystone.get_session('json_rpc', auth=auth) _SESSION.headers = { 'Content-Type': 'application/json' } return _SESSION
def _get_session(): global _SESSION if _SESSION is None: if json_rpc.require_authentication(): auth = keystone.get_auth('json_rpc') else: auth = None session = keystone.get_session('json_rpc', auth=auth) session.headers = {'Content-Type': 'application/json'} # Adds options like connect_retries _SESSION = keystone.get_adapter('json_rpc', session=session) return _SESSION