diff --git a/etc/nova/api-paste.ini b/etc/nova/api-paste.ini index f16e36cb0185..1ba61c42696e 100644 --- a/etc/nova/api-paste.ini +++ b/etc/nova/api-paste.ini @@ -81,7 +81,7 @@ noauth = request_id faultwrap sizelimit noauth_v3 osapi_compute_app_v3 keystone = request_id faultwrap sizelimit authtoken keystonecontext osapi_compute_app_v3 [filter:request_id] -paste.filter_factory = nova.openstack.common.middleware.request_id:RequestIdMiddleware.factory +paste.filter_factory = oslo.middleware:RequestId.factory [filter:compute_req_id] paste.filter_factory = nova.api.compute_req_id:ComputeReqIdMiddleware.factory diff --git a/nova/api/auth.py b/nova/api/auth.py index d6e6c1430ccc..1c9903757025 100644 --- a/nova/api/auth.py +++ b/nova/api/auth.py @@ -17,6 +17,7 @@ Common Auth Middleware. """ from oslo.config import cfg +from oslo.middleware import request_id from oslo.serialization import jsonutils import webob.dec import webob.exc @@ -25,7 +26,6 @@ from nova import context from nova.i18n import _ from nova.i18n import _LW from nova.openstack.common import log as logging -from nova.openstack.common.middleware import request_id from nova import wsgi diff --git a/nova/api/compute_req_id.py b/nova/api/compute_req_id.py index 2118d96eb0a4..711756e68605 100644 --- a/nova/api/compute_req_id.py +++ b/nova/api/compute_req_id.py @@ -23,10 +23,10 @@ Responses for APIv3 are taken care of by the request_id middleware provided in oslo. """ +from oslo.middleware import base import webob.dec from nova.openstack.common import context -from nova.openstack.common.middleware import base ENV_REQUEST_ID = 'openstack.request_id' diff --git a/nova/openstack/common/middleware/base.py b/nova/openstack/common/middleware/base.py deleted file mode 100644 index 464a1ccd72e7..000000000000 --- a/nova/openstack/common/middleware/base.py +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright 2011 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. - -"""Base class(es) for WSGI Middleware.""" - -import webob.dec - - -class Middleware(object): - """Base WSGI middleware wrapper. - - These classes require an application to be initialized that will be called - next. By default the middleware will simply call its wrapped app, or you - can override __call__ to customize its behavior. - """ - - @classmethod - def factory(cls, global_conf, **local_conf): - """Factory method for paste.deploy.""" - return cls - - def __init__(self, application): - self.application = application - - def process_request(self, req): - """Called on each request. - - If this returns None, the next application down the stack will be - executed. If it returns a response then that response will be returned - and execution will stop here. - """ - return None - - def process_response(self, response): - """Do whatever you'd like to the response.""" - return response - - @webob.dec.wsgify - def __call__(self, req): - response = self.process_request(req) - if response: - return response - response = req.get_response(self.application) - return self.process_response(response) diff --git a/nova/openstack/common/middleware/request_id.py b/nova/openstack/common/middleware/request_id.py index 03cf59416ee9..92f57e0c94ab 100644 --- a/nova/openstack/common/middleware/request_id.py +++ b/nova/openstack/common/middleware/request_id.py @@ -1,6 +1,3 @@ -# Copyright (c) 2013 NEC Corporation -# 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 @@ -13,16 +10,10 @@ # License for the specific language governing permissions and limitations # under the License. -"""Middleware that ensures request ID. +"""Compatibility shim for Kilo, while operators migrate to oslo.middleware.""" -It ensures to assign request ID for each API request and set it to -request environment. The request ID is also added to API response. -""" +from oslo.middleware import request_id -import webob.dec - -from nova.openstack.common import context -from nova.openstack.common.middleware import base from nova.openstack.common import versionutils @@ -30,15 +21,7 @@ ENV_REQUEST_ID = 'openstack.request_id' HTTP_RESP_HEADER_REQUEST_ID = 'x-openstack-request-id' -@versionutils.deprecated(as_of=versionutils.deprecated.JUNO, +@versionutils.deprecated(as_of=versionutils.deprecated.KILO, in_favor_of='oslo.middleware.RequestId') -class RequestIdMiddleware(base.Middleware): - - @webob.dec.wsgify - def __call__(self, req): - req_id = context.generate_request_id() - req.environ[ENV_REQUEST_ID] = req_id - response = req.get_response(self.application) - if HTTP_RESP_HEADER_REQUEST_ID not in response.headers: - response.headers.add(HTTP_RESP_HEADER_REQUEST_ID, req_id) - return response +class RequestIdMiddleware(request_id.RequestId): + pass diff --git a/nova/tests/api/test_auth.py b/nova/tests/api/test_auth.py index 73bc24048212..e11c611b3a2e 100644 --- a/nova/tests/api/test_auth.py +++ b/nova/tests/api/test_auth.py @@ -13,13 +13,13 @@ # under the License. from oslo.config import cfg +from oslo.middleware import request_id from oslo.serialization import jsonutils import webob import webob.exc import nova.api.auth from nova.i18n import _ -from nova.openstack.common.middleware import request_id from nova import test CONF = cfg.CONF diff --git a/requirements.txt b/requirements.txt index 8358b75402ff..93a1f448d18f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -47,3 +47,4 @@ lockfile>=0.8 simplejson>=2.2.0 rfc3986>=0.2.0 # Apache-2.0 oslo.vmware>=0.6.0 # Apache-2.0 +oslo.middleware>=0.1.0 # Apache-2.0