def deploy(conf): """Assemble the middleware pipeline leading to the placement app.""" if conf.api.auth_strategy == 'noauth2': auth_middleware = auth.NoAuthMiddleware else: # Do not use 'oslo_config_project' param here as the conf # location may have been overridden earlier in the deployment # process with OS_PLACEMENT_CONFIG_DIR in wsgi.py. auth_middleware = auth.filter_factory({}, oslo_config_config=conf) # Pass in our CORS config, if any, manually as that's a) # explicit, b) makes testing more straightfoward, c) let's # us control the use of cors by the presence of its config. conf.register_opts(cors.CORS_OPTS, 'cors') if conf.cors.allowed_origin: cors_middleware = oslo_middleware.CORS.factory({}, **conf.cors) else: cors_middleware = None context_middleware = auth.PlacementKeystoneContext req_id_middleware = oslo_middleware.RequestId microversion_middleware = mp_middleware.MicroversionMiddleware fault_middleware = fault_wrap.FaultWrapper request_log = requestlog.RequestLog application = handler.PlacementHandler() # configure microversion middleware in the old school way application = microversion_middleware( application, microversion.SERVICE_TYPE, microversion.VERSIONS, json_error_formatter=util.json_error_formatter) # NOTE(cdent): The ordering here is important. The list is ordered # from the inside out. For a single request req_id_middleware is called # first and microversion_middleware last. Then the request is finally # passed to the application (the PlacementHandler). At that point # the response ascends the middleware in the reverse of the # order the request went in. This order ensures that log messages # all see the same contextual information including request id and # authentication information. for middleware in ( fault_middleware, request_log, context_middleware, auth_middleware, cors_middleware, req_id_middleware, ): if middleware: application = middleware(application) # NOTE(mriedem): Ignore scope check UserWarnings from oslo.policy. if not conf.oslo_policy.enforce_scope: import warnings warnings.filterwarnings('ignore', message="Policy .* failed scope check", category=UserWarning) return application
def deploy(conf, project_name): """Assemble the middleware pipeline leading to the placement app.""" if conf.auth_strategy == 'noauth2': auth_middleware = auth.NoAuthMiddleware else: # Do not provide global conf to middleware here. auth_middleware = auth_token.filter_factory( {}, olso_config_project=project_name) context_middleware = auth.PlacementKeystoneContext req_id_middleware = request_id.RequestId microversion_middleware = microversion.MicroversionMiddleware fault_wrap = common_api.FaultWrapper request_log = requestlog.RequestLog application = handler.PlacementHandler() for middleware in (context_middleware, auth_middleware, microversion_middleware, fault_wrap, req_id_middleware, request_log, ): application = middleware(application) return application
def deploy(conf, project_name): """Assemble the middleware pipeline leading to the placement app.""" if conf.api.auth_strategy == 'noauth2': auth_middleware = auth.NoAuthMiddleware else: # Do not provide global conf to middleware here. auth_middleware = auth_token.filter_factory( {}, olso_config_project=project_name) context_middleware = auth.PlacementKeystoneContext req_id_middleware = request_id.RequestId microversion_middleware = microversion.MicroversionMiddleware fault_wrap = common_api.FaultWrapper request_log = requestlog.RequestLog application = handler.PlacementHandler() # NOTE(cdent): The ordering here is important. The list is ordered # from the inside out. For a single request req_id_middleware is called # first and microversion_middleware last. Then the request is finally # passed to the application (the PlacementHandler). At that point # the response ascends the middleware in the reverse of the # order the request went in. This order ensures that log messages # all see the same contextual information including request id and # authentication information. for middleware in (microversion_middleware, fault_wrap, request_log, context_middleware, auth_middleware, req_id_middleware, ): application = middleware(application) return application
def test_404_no_error_log(self, mocked_log): environ = _environ(path='/hello', method='GET') context_mock = mock.Mock() context_mock.to_policy_values.return_value = {'roles': ['admin']} environ['placement.context'] = context_mock app = handler.PlacementHandler() self.assertRaises(webob.exc.HTTPNotFound, app, environ, start_response) mocked_log.error.assert_not_called() mocked_log.exception.assert_not_called()
def deploy(conf, project_name): """Assemble the middleware pipeline leading to the placement app.""" if conf.api.auth_strategy == 'noauth2': auth_middleware = auth.NoAuthMiddleware else: # Do not use 'oslo_config_project' param here as the conf # location may have been overridden earlier in the deployment # process with OS_PLACEMENT_CONFIG_DIR in wsgi.py. auth_middleware = auth_token.filter_factory({}, oslo_config_config=conf) # Pass in our CORS config, if any, manually as that's a) # explicit, b) makes testing more straightfoward, c) let's # us control the use of cors by the presence of its config. conf.register_opts(cors.CORS_OPTS, 'cors') if conf.cors.allowed_origin: cors_middleware = oslo_middleware.CORS.factory({}, **conf.cors) else: cors_middleware = None context_middleware = auth.PlacementKeystoneContext req_id_middleware = oslo_middleware.RequestId microversion_middleware = microversion.MicroversionMiddleware fault_wrap = common_api.FaultWrapper request_log = requestlog.RequestLog application = handler.PlacementHandler() # NOTE(cdent): The ordering here is important. The list is ordered # from the inside out. For a single request req_id_middleware is called # first and microversion_middleware last. Then the request is finally # passed to the application (the PlacementHandler). At that point # the response ascends the middleware in the reverse of the # order the request went in. This order ensures that log messages # all see the same contextual information including request id and # authentication information. for middleware in ( microversion_middleware, fault_wrap, request_log, context_middleware, auth_middleware, cors_middleware, req_id_middleware, ): if middleware: application = middleware(application) return application
def setUp(self): super(ContentHeadersTest, self).setUp() self.environ = _environ(path='/') self.app = handler.PlacementHandler()