Define entry points for filter factories for Paste Deployment

Define filter factories so other projects can reference them by name
and can take advantage of the python egg instead of referencing
by the direct path.

Change-Id: Id05c319c1d19261618471fa75983cf8020fc60b6
Closes-Bug: 1500509
This commit is contained in:
Tom Cocozzello 2015-10-01 16:33:23 -05:00
parent ae44f8ce50
commit 88ad62563d
2 changed files with 58 additions and 0 deletions

View File

@ -0,0 +1,47 @@
# 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.
from oslotest import base
import stevedore
from testtools import matchers
import oslo_middleware
class TestPasteDeploymentEntryPoints(base.BaseTestCase):
def test_entry_points(self):
factory_classes = {
'catch_errors': 'CatchErrors',
'correlation_id': 'CorrelationId',
'cors': 'CORS',
'debug': 'Debug',
'healthcheck': 'Healthcheck',
'http_proxy_to_wsgi': 'HTTPProxyToWSGI',
'request_id': 'RequestId',
'sizelimit': 'RequestBodySizeLimiter',
'ssl': 'SSLMiddleware',
}
em = stevedore.ExtensionManager('paste.filter_factory')
# Ensure all the factories are defined by their names
factory_names = [extension.name for extension in em]
self.assertThat(factory_names,
matchers.ContainsAll(factory_classes))
# Ensure that we can create instances of the filter factories
for factory_name, class_name in factory_classes.items():
e = [m for m in em if m.name == factory_name][0]
factory = getattr(oslo_middleware, factory_name)
factory_class = getattr(factory, class_name).factory
self.assertEqual(factory_class, e.plugin)

View File

@ -38,6 +38,17 @@ oslo.middleware.healthcheck =
disable_by_file = oslo_middleware.healthcheck.disable_by_file:DisableByFileHealthcheck
disable_by_files_ports = oslo_middleware.healthcheck.disable_by_file:DisableByFilesPortsHealthcheck
paste.filter_factory =
catch_errors = oslo_middleware:CatchErrors.factory
correlation_id = oslo_middleware:CorrelationId.factory
cors = oslo_middleware:CORS.factory
debug = oslo_middleware:Debug.factory
healthcheck = oslo_middleware:Healthcheck.factory
http_proxy_to_wsgi = oslo_middleware:HTTPProxyToWSGI.factory
request_id = oslo_middleware:RequestId.factory
sizelimit = oslo_middleware:RequestBodySizeLimiter.factory
ssl = oslo_middleware:SSLMiddleware.factory
[build_sphinx]
source-dir = doc/source
build-dir = doc/build