Define entry points for filter factories for Paste Deployment

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

Change-Id: I555ca5e4ae6bd89775d8ef95940b6915f4cef4da
Closes-Bug: #1505407
This commit is contained in:
Tom Cocozzello 2015-10-12 16:15:07 -05:00
parent de6b98fd5c
commit 63e7e662d3
2 changed files with 41 additions and 0 deletions

View File

@ -0,0 +1,35 @@
# 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.
import stevedore
from testtools import matchers
from keystonemiddleware.tests.unit import utils
class TestPasteDeploymentEntryPoints(utils.BaseTestCase):
def test_entry_points(self):
expected_factory_names = [
'audit',
'auth_token',
'ec2_token',
's3_token',
]
em = stevedore.ExtensionManager('paste.filter_factory')
exp_factories = set(['keystonemiddleware.' + name + ':filter_factory'
for name in expected_factory_names])
actual_factories = set(['{0.__module__}:{0.__name__}'.format(
extension.plugin) for extension in em])
# Ensure that all factories are defined by their names
self.assertThat(actual_factories, matchers.ContainsAll(exp_factories))

View File

@ -30,6 +30,12 @@ setup-hooks =
oslo.config.opts =
keystonemiddleware.auth_token = keystonemiddleware.opts:list_auth_token_opts
paste.filter_factory =
auth_token = keystonemiddleware.auth_token:filter_factory
audit = keystonemiddleware.audit:filter_factory
ec2_token = keystonemiddleware.ec2_token:filter_factory
s3_token = keystonemiddleware.s3_token:filter_factory
[build_sphinx]
source-dir = doc/source
build-dir = doc/build