Пример #1
0
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
Пример #2
0
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
Пример #3
0
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
Пример #4
0
 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()
Пример #5
0
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()