summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Cocozzello <tjcocozz@us.ibm.com>2015-10-01 16:33:23 -0500
committerTom Cocozzello <tjcocozz@us.ibm.com>2015-11-13 08:33:28 -0600
commit88ad62563d509baa94790f43eef186d7f3534be6 (patch)
treead807b3c55196101d837dfb88bc05be0c475c954
parentae44f8ce5085130de9315bbcd8c4d8623812d780 (diff)
downloadoslo-middleware-88ad62563d509baa94790f43eef186d7f3534be6.tar.gz
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
-rw-r--r--oslo_middleware/tests/test_entry_points.py47
-rw-r--r--setup.cfg11
2 files changed, 58 insertions, 0 deletions
diff --git a/oslo_middleware/tests/test_entry_points.py b/oslo_middleware/tests/test_entry_points.py
new file mode 100644
index 0000000..b39678b
--- /dev/null
+++ b/oslo_middleware/tests/test_entry_points.py
@@ -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)
diff --git a/setup.cfg b/setup.cfg
index 8ad6c42..c9e924a 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -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