diff --git a/keystone/controllers.py b/keystone/controllers.py index 55d0736fb0..0f8eec7877 100644 --- a/keystone/controllers.py +++ b/keystone/controllers.py @@ -62,8 +62,9 @@ def register_version(version): class Version(wsgi.Application): - def __init__(self, version_type): + def __init__(self, version_type, routers=None): self.endpoint_url_type = version_type + self._routers = routers super(Version, self).__init__() diff --git a/keystone/routers.py b/keystone/routers.py index 73cd47cd03..a0f9ed22c1 100644 --- a/keystone/routers.py +++ b/keystone/routers.py @@ -57,11 +57,13 @@ class VersionV2(wsgi.ComposableRouter): class VersionV3(wsgi.ComposableRouter): - def __init__(self, description): + def __init__(self, description, routers): self.description = description + self._routers = routers def add_routes(self, mapper): - version_controller = controllers.Version(self.description) + version_controller = controllers.Version(self.description, + routers=self._routers) mapper.connect('/', controller=version_controller, action='get_version_v3') diff --git a/keystone/service.py b/keystone/service.py index 3837d8d0ca..a2a100d5fb 100644 --- a/keystone/service.py +++ b/keystone/service.py @@ -88,7 +88,8 @@ def admin_version_app_factory(global_conf, **local_conf): def v3_app_factory(global_conf, **local_conf): controllers.register_version('v3') mapper = routes.Mapper() - v3routers = [] + sub_routers = [] + _routers = [] router_modules = [assignment, auth, catalog, credential, identity, policy] if CONF.trust.enabled: @@ -96,10 +97,11 @@ def v3_app_factory(global_conf, **local_conf): for module in router_modules: routers_instance = module.routers.Routers() - routers_instance.append_v3_routers(mapper, v3routers) + _routers.append(routers_instance) + routers_instance.append_v3_routers(mapper, sub_routers) # Add in the v3 version api - v3routers.append(routers.VersionV3('admin')) - v3routers.append(routers.VersionV3('public')) + sub_routers.append(routers.VersionV3('admin', _routers)) + sub_routers.append(routers.VersionV3('public', _routers)) # TODO(ayoung): put token routes here - return wsgi.ComposingRouter(mapper, v3routers) + return wsgi.ComposingRouter(mapper, sub_routers)