From 025c23eef198f1fccb402e16fa989f37efa0e2a1 Mon Sep 17 00:00:00 2001 From: Julien Danjou Date: Wed, 20 Aug 2014 17:16:57 +0200 Subject: [PATCH] Remove oslo middleware Now that oslo.middleware has been released, we don't need to include that code anymore. Change-Id: Icbc52013fece6a969752bf45035e5820178fc591 --- .../openstack/common/middleware/__init__.py | 0 .../openstack/common/middleware/base.py | 56 ------------- .../common/middleware/catch_errors.py | 43 ---------- .../common/middleware/correlation_id.py | 28 ------- .../openstack/common/middleware/debug.py | 60 -------------- .../openstack/common/middleware/request_id.py | 41 ---------- .../openstack/common/middleware/sizelimit.py | 82 ------------------- openstack-common.conf | 6 -- 8 files changed, 316 deletions(-) delete mode 100644 ceilometer/openstack/common/middleware/__init__.py delete mode 100644 ceilometer/openstack/common/middleware/base.py delete mode 100644 ceilometer/openstack/common/middleware/catch_errors.py delete mode 100644 ceilometer/openstack/common/middleware/correlation_id.py delete mode 100644 ceilometer/openstack/common/middleware/debug.py delete mode 100644 ceilometer/openstack/common/middleware/request_id.py delete mode 100644 ceilometer/openstack/common/middleware/sizelimit.py diff --git a/ceilometer/openstack/common/middleware/__init__.py b/ceilometer/openstack/common/middleware/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/ceilometer/openstack/common/middleware/base.py b/ceilometer/openstack/common/middleware/base.py deleted file mode 100644 index 464a1ccd7..000000000 --- a/ceilometer/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/ceilometer/openstack/common/middleware/catch_errors.py b/ceilometer/openstack/common/middleware/catch_errors.py deleted file mode 100644 index 5045076f6..000000000 --- a/ceilometer/openstack/common/middleware/catch_errors.py +++ /dev/null @@ -1,43 +0,0 @@ -# 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 -# -# 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. - -"""Middleware that provides high-level error handling. - -It catches all exceptions from subsequent applications in WSGI pipeline -to hide internal errors from API response. -""" -import logging - -import webob.dec -import webob.exc - -from ceilometer.openstack.common.gettextutils import _LE -from ceilometer.openstack.common.middleware import base - - -LOG = logging.getLogger(__name__) - - -class CatchErrorsMiddleware(base.Middleware): - - @webob.dec.wsgify - def __call__(self, req): - try: - response = req.get_response(self.application) - except Exception: - LOG.exception(_LE('An error occurred during ' - 'processing the request: %s')) - response = webob.exc.HTTPInternalServerError() - return response diff --git a/ceilometer/openstack/common/middleware/correlation_id.py b/ceilometer/openstack/common/middleware/correlation_id.py deleted file mode 100644 index f0560a5c2..000000000 --- a/ceilometer/openstack/common/middleware/correlation_id.py +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright (c) 2013 Rackspace Hosting -# 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. - -"""Middleware that attaches a correlation id to WSGI request""" - -import uuid - -from ceilometer.openstack.common.middleware import base - - -class CorrelationIdMiddleware(base.Middleware): - - def process_request(self, req): - correlation_id = (req.headers.get("X_CORRELATION_ID") or - str(uuid.uuid4())) - req.headers['X_CORRELATION_ID'] = correlation_id diff --git a/ceilometer/openstack/common/middleware/debug.py b/ceilometer/openstack/common/middleware/debug.py deleted file mode 100644 index 7626dd8d4..000000000 --- a/ceilometer/openstack/common/middleware/debug.py +++ /dev/null @@ -1,60 +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. - -"""Debug middleware""" - -from __future__ import print_function - -import sys - -import six -import webob.dec - -from ceilometer.openstack.common.middleware import base - - -class Debug(base.Middleware): - """Helper class that returns debug information. - - Can be inserted into any WSGI application chain to get information about - the request and response. - """ - - @webob.dec.wsgify - def __call__(self, req): - print(("*" * 40) + " REQUEST ENVIRON") - for key, value in req.environ.items(): - print(key, "=", value) - print() - resp = req.get_response(self.application) - - print(("*" * 40) + " RESPONSE HEADERS") - for (key, value) in six.iteritems(resp.headers): - print(key, "=", value) - print() - - resp.app_iter = self.print_generator(resp.app_iter) - - return resp - - @staticmethod - def print_generator(app_iter): - """Prints the contents of a wrapper string iterator when iterated.""" - print(("*" * 40) + " BODY") - for part in app_iter: - sys.stdout.write(part) - sys.stdout.flush() - yield part - print() diff --git a/ceilometer/openstack/common/middleware/request_id.py b/ceilometer/openstack/common/middleware/request_id.py deleted file mode 100644 index 5b0b7f17a..000000000 --- a/ceilometer/openstack/common/middleware/request_id.py +++ /dev/null @@ -1,41 +0,0 @@ -# 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 -# -# 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. - -"""Middleware that ensures request ID. - -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. -""" - -import webob.dec - -from ceilometer.openstack.common import context -from ceilometer.openstack.common.middleware import base - - -ENV_REQUEST_ID = 'openstack.request_id' -HTTP_RESP_HEADER_REQUEST_ID = 'x-openstack-request-id' - - -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 diff --git a/ceilometer/openstack/common/middleware/sizelimit.py b/ceilometer/openstack/common/middleware/sizelimit.py deleted file mode 100644 index 13928b0e8..000000000 --- a/ceilometer/openstack/common/middleware/sizelimit.py +++ /dev/null @@ -1,82 +0,0 @@ -# Copyright (c) 2012 Red Hat, Inc. -# -# 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. - -""" -Request Body limiting middleware. - -""" - -from oslo.config import cfg -import webob.dec -import webob.exc - -from ceilometer.openstack.common.gettextutils import _ -from ceilometer.openstack.common.middleware import base - - -# default request size is 112k -max_req_body_size = cfg.IntOpt('max_request_body_size', - deprecated_name='osapi_max_request_body_size', - default=114688, - help='The maximum body size for each ' - ' request, in bytes.') - -CONF = cfg.CONF -CONF.register_opt(max_req_body_size) - - -class LimitingReader(object): - """Reader to limit the size of an incoming request.""" - def __init__(self, data, limit): - """Initiates LimitingReader object. - - :param data: Underlying data object - :param limit: maximum number of bytes the reader should allow - """ - self.data = data - self.limit = limit - self.bytes_read = 0 - - def __iter__(self): - for chunk in self.data: - self.bytes_read += len(chunk) - if self.bytes_read > self.limit: - msg = _("Request is too large.") - raise webob.exc.HTTPRequestEntityTooLarge(explanation=msg) - else: - yield chunk - - def read(self, i=None): - result = self.data.read(i) - self.bytes_read += len(result) - if self.bytes_read > self.limit: - msg = _("Request is too large.") - raise webob.exc.HTTPRequestEntityTooLarge(explanation=msg) - return result - - -class RequestBodySizeLimiter(base.Middleware): - """Limit the size of incoming requests.""" - - @webob.dec.wsgify - def __call__(self, req): - if (req.content_length is not None and - req.content_length > CONF.max_request_body_size): - msg = _("Request is too large.") - raise webob.exc.HTTPRequestEntityTooLarge(explanation=msg) - if req.content_length is None and req.is_body_readable: - limiter = LimitingReader(req.body_file, - CONF.max_request_body_size) - req.body_file = limiter - return self.application diff --git a/openstack-common.conf b/openstack-common.conf index ff4442fa4..dda5ee492 100644 --- a/openstack-common.conf +++ b/openstack-common.conf @@ -12,12 +12,6 @@ module=local module=log module=log_handler module=loopingcall -module=middleware.base -module=middleware.catch_errors -module=middleware.correlation_id -module=middleware.debug -module=middleware.request_id -module=middleware.sizelimit module=policy module=service module=threadgroup