From e64a1b5891a5413efbf954c9e5bab2888fcac86a Mon Sep 17 00:00:00 2001 From: Samuel de Medeiros Queiroz Date: Thu, 3 Dec 2015 15:03:52 -0300 Subject: [PATCH] Remove exposure of routers at package level Keystone API routers are exposed at their package level (in __init__.py files). This causes them to be unnecessarily executed each time something whithin that package is used. For example, simply importing keystone.federation.constants would make the federation routers code to be executed. This patch remove routers exposure from package level and import them directly in services.py, which is the single place that needs them. Change-Id: If68184c871ac77659ad2e64aa5f0aafac7a4bf70 --- keystone/assignment/__init__.py | 1 - keystone/auth/__init__.py | 1 - keystone/catalog/__init__.py | 1 - keystone/credential/__init__.py | 1 - keystone/endpoint_policy/__init__.py | 1 - keystone/federation/__init__.py | 1 - keystone/identity/__init__.py | 1 - keystone/oauth1/__init__.py | 1 - keystone/policy/__init__.py | 1 - keystone/resource/__init__.py | 1 - keystone/revoke/__init__.py | 1 - keystone/token/__init__.py | 1 - keystone/trust/__init__.py | 1 - keystone/version/service.py | 66 ++++++++++++++-------------- 14 files changed, 33 insertions(+), 46 deletions(-) diff --git a/keystone/assignment/__init__.py b/keystone/assignment/__init__.py index 49ad7594ef..4aa04ee650 100644 --- a/keystone/assignment/__init__.py +++ b/keystone/assignment/__init__.py @@ -14,4 +14,3 @@ from keystone.assignment import controllers # noqa from keystone.assignment.core import * # noqa -from keystone.assignment import routers # noqa diff --git a/keystone/auth/__init__.py b/keystone/auth/__init__.py index b1e4203e66..bcbf69fde4 100644 --- a/keystone/auth/__init__.py +++ b/keystone/auth/__init__.py @@ -14,4 +14,3 @@ from keystone.auth import controllers # noqa from keystone.auth.core import * # noqa -from keystone.auth import routers # noqa diff --git a/keystone/catalog/__init__.py b/keystone/catalog/__init__.py index 8d4d156731..29f297d621 100644 --- a/keystone/catalog/__init__.py +++ b/keystone/catalog/__init__.py @@ -14,4 +14,3 @@ from keystone.catalog import controllers # noqa from keystone.catalog.core import * # noqa -from keystone.catalog import routers # noqa diff --git a/keystone/credential/__init__.py b/keystone/credential/__init__.py index fc7b63177e..ea9d906c1c 100644 --- a/keystone/credential/__init__.py +++ b/keystone/credential/__init__.py @@ -14,4 +14,3 @@ from keystone.credential import controllers # noqa from keystone.credential.core import * # noqa -from keystone.credential import routers # noqa diff --git a/keystone/endpoint_policy/__init__.py b/keystone/endpoint_policy/__init__.py index c8ae5e68b9..36c016a137 100644 --- a/keystone/endpoint_policy/__init__.py +++ b/keystone/endpoint_policy/__init__.py @@ -11,4 +11,3 @@ # under the License. from keystone.endpoint_policy.core import * # noqa -from keystone.endpoint_policy import routers # noqa diff --git a/keystone/federation/__init__.py b/keystone/federation/__init__.py index be528a55b8..b62cfb6f03 100644 --- a/keystone/federation/__init__.py +++ b/keystone/federation/__init__.py @@ -13,4 +13,3 @@ # under the License. from keystone.federation.core import * # noqa -from keystone.federation import routers # noqa diff --git a/keystone/identity/__init__.py b/keystone/identity/__init__.py index 3063b5ca02..96b3ee773e 100644 --- a/keystone/identity/__init__.py +++ b/keystone/identity/__init__.py @@ -15,4 +15,3 @@ from keystone.identity import controllers # noqa from keystone.identity.core import * # noqa from keystone.identity import generator # noqa -from keystone.identity import routers # noqa diff --git a/keystone/oauth1/__init__.py b/keystone/oauth1/__init__.py index 1065f9ef28..ea011f6b50 100644 --- a/keystone/oauth1/__init__.py +++ b/keystone/oauth1/__init__.py @@ -13,4 +13,3 @@ # under the License. from keystone.oauth1.core import * # noqa -from keystone.oauth1 import routers # noqa diff --git a/keystone/policy/__init__.py b/keystone/policy/__init__.py index 4cd9679384..a95aac1f3b 100644 --- a/keystone/policy/__init__.py +++ b/keystone/policy/__init__.py @@ -14,4 +14,3 @@ from keystone.policy import controllers # noqa from keystone.policy.core import * # noqa -from keystone.policy import routers # noqa diff --git a/keystone/resource/__init__.py b/keystone/resource/__init__.py index c0070a12e6..7f879f4b67 100644 --- a/keystone/resource/__init__.py +++ b/keystone/resource/__init__.py @@ -12,4 +12,3 @@ from keystone.resource import controllers # noqa from keystone.resource.core import * # noqa -from keystone.resource import routers # noqa diff --git a/keystone/revoke/__init__.py b/keystone/revoke/__init__.py index 22bcf0cf37..6d4ee0bcf8 100644 --- a/keystone/revoke/__init__.py +++ b/keystone/revoke/__init__.py @@ -11,4 +11,3 @@ # under the License. from keystone.revoke.core import * # noqa -from keystone.revoke.routers import * # noqa diff --git a/keystone/token/__init__.py b/keystone/token/__init__.py index a73e19f99f..f85ffc79db 100644 --- a/keystone/token/__init__.py +++ b/keystone/token/__init__.py @@ -15,4 +15,3 @@ from keystone.token import controllers # noqa from keystone.token import persistence # noqa from keystone.token import provider # noqa -from keystone.token import routers # noqa diff --git a/keystone/trust/__init__.py b/keystone/trust/__init__.py index e5ee61fbc7..bd7297ea3b 100644 --- a/keystone/trust/__init__.py +++ b/keystone/trust/__init__.py @@ -14,4 +14,3 @@ from keystone.trust import controllers # noqa from keystone.trust.core import * # noqa -from keystone.trust import routers # noqa diff --git a/keystone/version/service.py b/keystone/version/service.py index 6a6ed6c4c2..733f372ed3 100644 --- a/keystone/version/service.py +++ b/keystone/version/service.py @@ -20,21 +20,21 @@ from oslo_log import log from paste import deploy import routes -from keystone import assignment -from keystone import auth -from keystone import catalog +from keystone.assignment import routers as assignment_routers +from keystone.auth import routers as auth_routers +from keystone.catalog import routers as catalog_routers from keystone.common import wsgi -from keystone import credential -from keystone import endpoint_policy -from keystone import federation +from keystone.credential import routers as credential_routers +from keystone.endpoint_policy import routers as endpoint_policy_routers +from keystone.federation import routers as federation_routers from keystone.i18n import _LW -from keystone import identity -from keystone import oauth1 -from keystone import policy -from keystone import resource -from keystone import revoke -from keystone import token -from keystone import trust +from keystone.identity import routers as identity_routers +from keystone.oauth1 import routers as oauth1_routers +from keystone.policy import routers as policy_routers +from keystone.resource import routers as resource_routers +from keystone.revoke import routers as revoke_routers +from keystone.token import routers as token_routers +from keystone.trust import routers as trust_routers from keystone.version import controllers from keystone.version import routers @@ -82,8 +82,8 @@ def warn_local_conf(f): def public_app_factory(global_conf, **local_conf): controllers.register_version('v2.0') return wsgi.ComposingRouter(routes.Mapper(), - [assignment.routers.Public(), - token.routers.Router(), + [assignment_routers.Public(), + token_routers.Router(), routers.VersionV2('public'), routers.Extension(False)]) @@ -93,10 +93,10 @@ def public_app_factory(global_conf, **local_conf): def admin_app_factory(global_conf, **local_conf): controllers.register_version('v2.0') return wsgi.ComposingRouter(routes.Mapper(), - [identity.routers.Admin(), - assignment.routers.Admin(), - token.routers.Router(), - resource.routers.Admin(), + [identity_routers.Admin(), + assignment_routers.Admin(), + token_routers.Router(), + resource_routers.Admin(), routers.VersionV2('admin'), routers.Extension()]) @@ -126,25 +126,25 @@ def v3_app_factory(global_conf, **local_conf): # NOTE(dstanek): Routers should be ordered by their frequency of use in # a live system. This is due to the routes implementation. The most # frequently used routers should appear first. - router_modules = [auth, - assignment, - catalog, - credential, - identity, - policy, - resource, - revoke, - federation, - oauth1] + all_api_routers = [auth_routers, + assignment_routers, + catalog_routers, + credential_routers, + identity_routers, + policy_routers, + resource_routers, + revoke_routers, + federation_routers, + oauth1_routers] if CONF.trust.enabled: - router_modules.append(trust) + all_api_routers.append(trust_routers) if CONF.endpoint_policy.enabled: - router_modules.append(endpoint_policy) + all_api_routers.append(endpoint_policy_routers) - for module in router_modules: - routers_instance = module.routers.Routers() + for api_routers in all_api_routers: + routers_instance = api_routers.Routers() _routers.append(routers_instance) routers_instance.append_v3_routers(mapper, sub_routers)