From 5f3fcf1123170006609e1db593c03c3b020a647c Mon Sep 17 00:00:00 2001 From: Ilya Pekelny Date: Fri, 29 Nov 2013 16:46:08 +0200 Subject: [PATCH] Uses explicit imports for _ Previously `_` was monkeypatched in tests/core.py and bin/keystone-*. This meant that if a developer was not running the tests exactly as the documentation described they would not work. Even importing certain modules in a interactive Python interpreter would fail unless keystone.tests was imported first. Monkeypatching was removed and explicit import for `_` was added. Co-Authored-By: David Stanek Change-Id: I8b25b5b6d83fb873e25a8fab7686babf1d2261fa Closes-Bug: #1255518 --- bin/keystone-all | 10 +++++----- bin/keystone-manage | 9 +++++---- httpd/keystone.py | 7 ------- keystone/assignment/backends/kvs.py | 13 +++++++------ keystone/assignment/backends/ldap.py | 3 ++- keystone/assignment/backends/sql.py | 1 + keystone/assignment/controllers.py | 1 + keystone/assignment/core.py | 1 + keystone/auth/controllers.py | 1 + keystone/auth/plugins/external.py | 1 + keystone/auth/plugins/oauth1.py | 1 + keystone/auth/plugins/password.py | 1 + keystone/catalog/backends/templated.py | 1 + keystone/catalog/controllers.py | 1 + keystone/catalog/core.py | 1 + keystone/clean.py | 1 + keystone/common/authorization.py | 1 + keystone/common/base64utils.py | 2 ++ keystone/common/cache/backends/mongo.py | 1 + keystone/common/cache/core.py | 1 + keystone/common/controller.py | 1 + keystone/common/environment/__init__.py | 1 + keystone/common/environment/eventlet_server.py | 1 + keystone/common/kvs/backends/memcached.py | 1 + keystone/common/ldap/core.py | 1 + keystone/common/pemutils.py | 4 +++- keystone/common/serializer.py | 2 ++ keystone/common/sql/core.py | 1 + .../033_migrate_ec2credentials_table_credentials.py | 1 + keystone/common/sql/migration_helpers.py | 1 + keystone/common/utils.py | 1 + keystone/common/wsgi.py | 1 + keystone/contrib/ec2/controllers.py | 4 ++-- keystone/contrib/endpoint_filter/backends/sql.py | 1 + keystone/contrib/example/core.py | 1 + keystone/contrib/federation/utils.py | 1 + keystone/contrib/oauth1/backends/sql.py | 1 + keystone/contrib/oauth1/controllers.py | 1 + keystone/contrib/revoke/controllers.py | 1 + keystone/contrib/revoke/core.py | 1 + keystone/credential/controllers.py | 1 + keystone/credential/core.py | 1 + keystone/identity/backends/kvs.py | 1 + keystone/identity/backends/ldap.py | 1 + keystone/identity/backends/sql.py | 1 + keystone/identity/controllers.py | 1 + keystone/identity/core.py | 1 + keystone/middleware/core.py | 1 + keystone/notifications.py | 1 + keystone/policy/backends/rules.py | 1 + keystone/tests/core.py | 10 +--------- keystone/tests/fakeldap.py | 1 + keystone/tests/test_kvs.py | 2 +- keystone/tests/test_wsgi.py | 1 + keystone/token/backends/kvs.py | 1 + keystone/token/controllers.py | 1 + keystone/token/core.py | 1 + keystone/token/provider.py | 1 + keystone/token/providers/common.py | 1 + keystone/token/providers/pki.py | 1 + keystone/trust/controllers.py | 1 + keystone/trust/core.py | 1 + tox.ini | 3 +++ 63 files changed, 84 insertions(+), 36 deletions(-) diff --git a/bin/keystone-all b/bin/keystone-all index ffe68678a1..7482fff792 100755 --- a/bin/keystone-all +++ b/bin/keystone-all @@ -35,11 +35,11 @@ from paste import deploy import pbr.version from keystone.openstack.common import gettextutils - -# NOTE(blk-u): -# gettextutils.install() must run to set _ before importing any modules that -# contain static translated strings. -gettextutils.install('keystone', lazy=True) +# NOTE(dstanek): gettextutils.enable_lazy() must be called before +# gettextutils._() is called to ensure it has the desired lazy lookup +# behavior. This includes cases, like keystone.exceptions, where +# gettextutils._() is called at import time. +gettextutils.enable_lazy() from keystone.common import dependency from keystone.common import environment diff --git a/bin/keystone-manage b/bin/keystone-manage index e11e706e1d..527884c739 100755 --- a/bin/keystone-manage +++ b/bin/keystone-manage @@ -28,10 +28,11 @@ if os.path.exists(os.path.join(possible_topdir, sys.path.insert(0, possible_topdir) from keystone.openstack.common import gettextutils - -# NOTE(blk-u): gettextutils.install() must run to set _ before importing any -# modules that contain static translated strings. -gettextutils.install('keystone', lazy=True) +# NOTE(dstanek): gettextutils.enable_lazy() must be called before +# gettextutils._() is called to ensure it has the desired lazy lookup +# behavior. This includes cases, like keystone.exceptions, where +# gettextutils._() is called at import time. +gettextutils.enable_lazy() from keystone import cli from keystone.common import environment diff --git a/httpd/keystone.py b/httpd/keystone.py index df6c11d133..b5da6ac121 100644 --- a/httpd/keystone.py +++ b/httpd/keystone.py @@ -17,13 +17,6 @@ import os from paste import deploy -from keystone.openstack.common import gettextutils - -# NOTE(blk-u): -# gettextutils.install() must run to set _ before importing any modules that -# contain static translated strings. -gettextutils.install('keystone', lazy=True) - from keystone.common import dependency from keystone.common import environment from keystone.common import sql diff --git a/keystone/assignment/backends/kvs.py b/keystone/assignment/backends/kvs.py index aec2dbe994..bbcf9e3343 100644 --- a/keystone/assignment/backends/kvs.py +++ b/keystone/assignment/backends/kvs.py @@ -16,6 +16,7 @@ from keystone import assignment from keystone import clean from keystone.common import kvs from keystone import exception +from keystone.openstack.common.gettextutils import _ class Assignment(kvs.Base, assignment.Driver): @@ -85,7 +86,7 @@ class Assignment(kvs.Base, assignment.Driver): metadata_keys = filter(lambda x: x.startswith("metadata_user-"), self.db.keys()) for key in metadata_keys: - _, meta_project_or_domain_id, meta_user_id = key.split('-') + i, meta_project_or_domain_id, meta_user_id = key.split('-') if meta_project_or_domain_id != tenant_id: # target is not the project, so on to next metadata. @@ -138,7 +139,7 @@ class Assignment(kvs.Base, assignment.Driver): metadata_keys = filter(lambda x: x.startswith('metadata_user-'), self.db.keys()) for key in metadata_keys: - _, meta_project_or_domain_id, meta_user_id = key.split('-') + i, meta_project_or_domain_id, meta_user_id = key.split('-') if meta_user_id != user_id: # Not the user, so on to next metadata. @@ -219,7 +220,7 @@ class Assignment(kvs.Base, assignment.Driver): self.db.keys()) for key in metadata_keys: template = {} - _, meta_project_or_domain_id, template['user_id'] = key.split('-') + i, meta_project_or_domain_id, template['user_id'] = key.split('-') try: self.get_project(meta_project_or_domain_id) template['project_id'] = meta_project_or_domain_id @@ -238,7 +239,7 @@ class Assignment(kvs.Base, assignment.Driver): self.db.keys()) for key in metadata_keys: template = {} - _, meta_project_or_domain_id, template['group_id'] = key.split('-') + i, meta_project_or_domain_id, template['group_id'] = key.split('-') try: self.get_project(meta_project_or_domain_id) template['project_id'] = meta_project_or_domain_id @@ -374,7 +375,7 @@ class Assignment(kvs.Base, assignment.Driver): metadata_keys = filter(lambda x: x.startswith('metadata_user-'), self.db.keys()) for key in metadata_keys: - _, meta_project_or_domain_id, meta_user_id = key.split('-') + i, meta_project_or_domain_id, meta_user_id = key.split('-') try: self.delete_grant(role_id, project_id=meta_project_or_domain_id, @@ -390,7 +391,7 @@ class Assignment(kvs.Base, assignment.Driver): metadata_keys = filter(lambda x: x.startswith('metadata_group-'), self.db.keys()) for key in metadata_keys: - _, meta_project_or_domain_id, meta_group_id = key.split('-') + i, meta_project_or_domain_id, meta_group_id = key.split('-') try: self.delete_grant(role_id, project_id=meta_project_or_domain_id, diff --git a/keystone/assignment/backends/ldap.py b/keystone/assignment/backends/ldap.py index bacd31b6a3..440cb99147 100644 --- a/keystone/assignment/backends/ldap.py +++ b/keystone/assignment/backends/ldap.py @@ -25,6 +25,7 @@ from keystone.common import models from keystone import config from keystone import exception from keystone.identity.backends import ldap as ldap_identity +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log @@ -293,7 +294,7 @@ class Assignment(assignment.Driver): conn = self.group.get_connection() roles = conn.search_s(dn, ldap.SCOPE_ONELEVEL, query, ['%s' % '1.1']) - for role_dn, _ in roles: + for role_dn, i in roles: conn.delete_s(role_dn) except ldap.NO_SUCH_OBJECT: pass diff --git a/keystone/assignment/backends/sql.py b/keystone/assignment/backends/sql.py index 5c7af2e42b..8602f5435d 100644 --- a/keystone/assignment/backends/sql.py +++ b/keystone/assignment/backends/sql.py @@ -21,6 +21,7 @@ from keystone.common.sql import migration_helpers from keystone import config from keystone import exception from keystone.openstack.common.db.sqlalchemy import migration +from keystone.openstack.common.gettextutils import _ CONF = config.CONF diff --git a/keystone/assignment/controllers.py b/keystone/assignment/controllers.py index fa01644ab9..2c4975b4af 100644 --- a/keystone/assignment/controllers.py +++ b/keystone/assignment/controllers.py @@ -27,6 +27,7 @@ from keystone.common import controller from keystone.common import dependency from keystone import config from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log diff --git a/keystone/assignment/core.py b/keystone/assignment/core.py index 27e8f0309f..e674392982 100644 --- a/keystone/assignment/core.py +++ b/keystone/assignment/core.py @@ -26,6 +26,7 @@ from keystone.common import manager from keystone import config from keystone import exception from keystone import notifications +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log diff --git a/keystone/auth/controllers.py b/keystone/auth/controllers.py index 0289f302a2..1667d39bb4 100644 --- a/keystone/auth/controllers.py +++ b/keystone/auth/controllers.py @@ -23,6 +23,7 @@ from keystone.common import wsgi from keystone import config from keystone.contrib import federation from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import importutils from keystone.openstack.common import log from keystone.openstack.common import timeutils diff --git a/keystone/auth/plugins/external.py b/keystone/auth/plugins/external.py index b4d517cf7f..c6d401403a 100644 --- a/keystone/auth/plugins/external.py +++ b/keystone/auth/plugins/external.py @@ -22,6 +22,7 @@ from keystone import auth from keystone.common import config from keystone.common import dependency from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import versionutils diff --git a/keystone/auth/plugins/oauth1.py b/keystone/auth/plugins/oauth1.py index b70eadaa0d..956f9ea03e 100644 --- a/keystone/auth/plugins/oauth1.py +++ b/keystone/auth/plugins/oauth1.py @@ -17,6 +17,7 @@ from keystone.common import dependency from keystone.contrib.oauth1 import core as oauth from keystone.contrib.oauth1 import validator from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log from keystone.openstack.common import timeutils diff --git a/keystone/auth/plugins/password.py b/keystone/auth/plugins/password.py index a0db091a25..f8cd8528e2 100644 --- a/keystone/auth/plugins/password.py +++ b/keystone/auth/plugins/password.py @@ -15,6 +15,7 @@ from keystone import auth from keystone.common import dependency from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log METHOD_NAME = 'password' diff --git a/keystone/catalog/backends/templated.py b/keystone/catalog/backends/templated.py index 1ca80cb351..08d53b739c 100644 --- a/keystone/catalog/backends/templated.py +++ b/keystone/catalog/backends/templated.py @@ -20,6 +20,7 @@ from keystone.catalog.backends import kvs from keystone.catalog import core from keystone import config from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log from keystone.openstack.common import versionutils diff --git a/keystone/catalog/controllers.py b/keystone/catalog/controllers.py index eedad5b53b..500861d311 100644 --- a/keystone/catalog/controllers.py +++ b/keystone/catalog/controllers.py @@ -21,6 +21,7 @@ from keystone.common import controller from keystone.common import dependency from keystone.common import wsgi from keystone import exception +from keystone.openstack.common.gettextutils import _ INTERFACES = ['public', 'internal', 'admin'] diff --git a/keystone/catalog/core.py b/keystone/catalog/core.py index 0dfffcc68b..b4b3b8beda 100644 --- a/keystone/catalog/core.py +++ b/keystone/catalog/core.py @@ -24,6 +24,7 @@ from keystone.common import driver_hints from keystone.common import manager from keystone import config from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log diff --git a/keystone/clean.py b/keystone/clean.py index 208eebee1c..d660fee402 100644 --- a/keystone/clean.py +++ b/keystone/clean.py @@ -15,6 +15,7 @@ import six from keystone import exception +from keystone.openstack.common.gettextutils import _ def check_length(property_name, value, min_length=1, max_length=64): diff --git a/keystone/common/authorization.py b/keystone/common/authorization.py index 7d324e1016..7aacb366f2 100644 --- a/keystone/common/authorization.py +++ b/keystone/common/authorization.py @@ -19,6 +19,7 @@ import collections from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log diff --git a/keystone/common/base64utils.py b/keystone/common/base64utils.py index b944401b1d..c8f2b994b0 100644 --- a/keystone/common/base64utils.py +++ b/keystone/common/base64utils.py @@ -43,6 +43,8 @@ import string import six from six.moves import urllib +from keystone.openstack.common.gettextutils import _ + class InvalidBase64Error(ValueError): pass diff --git a/keystone/common/cache/backends/mongo.py b/keystone/common/cache/backends/mongo.py index 65ab3d1d66..bde4d8d932 100644 --- a/keystone/common/cache/backends/mongo.py +++ b/keystone/common/cache/backends/mongo.py @@ -20,6 +20,7 @@ from dogpile.cache import util as dp_util import six from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import importutils from keystone.openstack.common import log from keystone.openstack.common import timeutils diff --git a/keystone/common/cache/core.py b/keystone/common/cache/core.py index 1f80063a7e..f66b7037bd 100644 --- a/keystone/common/cache/core.py +++ b/keystone/common/cache/core.py @@ -20,6 +20,7 @@ from dogpile.cache import util from keystone import config from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import importutils from keystone.openstack.common import log diff --git a/keystone/common/controller.py b/keystone/common/controller.py index fbb2691920..08fee4d89c 100644 --- a/keystone/common/controller.py +++ b/keystone/common/controller.py @@ -22,6 +22,7 @@ from keystone.common import utils from keystone.common import wsgi from keystone import config from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log from keystone.openstack.common import versionutils diff --git a/keystone/common/environment/__init__.py b/keystone/common/environment/__init__.py index 4554ddb2e7..1680929587 100644 --- a/keystone/common/environment/__init__.py +++ b/keystone/common/environment/__init__.py @@ -16,6 +16,7 @@ import functools import os from keystone.common import config +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log CONF = config.CONF diff --git a/keystone/common/environment/eventlet_server.py b/keystone/common/environment/eventlet_server.py index 37a3d09447..9bae151ab9 100644 --- a/keystone/common/environment/eventlet_server.py +++ b/keystone/common/environment/eventlet_server.py @@ -24,6 +24,7 @@ import eventlet import eventlet.wsgi import greenlet +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log diff --git a/keystone/common/kvs/backends/memcached.py b/keystone/common/kvs/backends/memcached.py index a1c40cd25b..d6b6969c54 100644 --- a/keystone/common/kvs/backends/memcached.py +++ b/keystone/common/kvs/backends/memcached.py @@ -27,6 +27,7 @@ from dogpile.cache.backends import memcached from keystone.common import manager from keystone import config from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log diff --git a/keystone/common/ldap/core.py b/keystone/common/ldap/core.py index a2f86132db..6bdc466d03 100644 --- a/keystone/common/ldap/core.py +++ b/keystone/common/ldap/core.py @@ -19,6 +19,7 @@ import ldap.filter import six from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log LOG = log.getLogger(__name__) diff --git a/keystone/common/pemutils.py b/keystone/common/pemutils.py index 59962e840b..cf8d35ddfa 100755 --- a/keystone/common/pemutils.py +++ b/keystone/common/pemutils.py @@ -93,11 +93,13 @@ and consumption of PEM formatted data including: """ import base64 -from keystone.common import base64utils import re import six +from keystone.common import base64utils +from keystone.openstack.common.gettextutils import _ + PEM_TYPE_TO_HEADER = { u'cms': u'CMS', diff --git a/keystone/common/serializer.py b/keystone/common/serializer.py index cfb3941b5e..fb8e8164e0 100644 --- a/keystone/common/serializer.py +++ b/keystone/common/serializer.py @@ -25,6 +25,8 @@ import re import six +from keystone.openstack.common.gettextutils import _ + DOCTYPE = '' XMLNS = 'http://docs.openstack.org/identity/api/v2.0' diff --git a/keystone/common/sql/core.py b/keystone/common/sql/core.py index 43bd647d33..b863283e1b 100644 --- a/keystone/common/sql/core.py +++ b/keystone/common/sql/core.py @@ -34,6 +34,7 @@ from keystone.openstack.common.db import exception as db_exception from keystone.openstack.common.db import options as db_options from keystone.openstack.common.db.sqlalchemy import models from keystone.openstack.common.db.sqlalchemy import session as db_session +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import jsonutils diff --git a/keystone/common/sql/migrate_repo/versions/033_migrate_ec2credentials_table_credentials.py b/keystone/common/sql/migrate_repo/versions/033_migrate_ec2credentials_table_credentials.py index 080c84ce3b..a16904533b 100644 --- a/keystone/common/sql/migrate_repo/versions/033_migrate_ec2credentials_table_credentials.py +++ b/keystone/common/sql/migrate_repo/versions/033_migrate_ec2credentials_table_credentials.py @@ -16,6 +16,7 @@ import sqlalchemy as sql from keystone.common import utils from keystone import exception +from keystone.openstack.common.gettextutils import _ def upgrade(migrate_engine): diff --git a/keystone/common/sql/migration_helpers.py b/keystone/common/sql/migration_helpers.py index 965cde6adf..0072651ac7 100644 --- a/keystone/common/sql/migration_helpers.py +++ b/keystone/common/sql/migration_helpers.py @@ -25,6 +25,7 @@ from keystone.common import sql from keystone import contrib from keystone import exception from keystone.openstack.common.db.sqlalchemy import migration +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import importutils diff --git a/keystone/common/utils.py b/keystone/common/utils.py index e03f68df0d..c720d21343 100644 --- a/keystone/common/utils.py +++ b/keystone/common/utils.py @@ -29,6 +29,7 @@ import six from keystone.common import config from keystone.common import environment from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log from keystone.openstack.common import strutils from six import moves diff --git a/keystone/common/wsgi.py b/keystone/common/wsgi.py index ae1fa2a1b9..e92b24973f 100644 --- a/keystone/common/wsgi.py +++ b/keystone/common/wsgi.py @@ -28,6 +28,7 @@ from keystone.common import dependency from keystone.common import utils from keystone import exception from keystone.openstack.common import gettextutils +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import importutils from keystone.openstack.common import jsonutils from keystone.openstack.common import log diff --git a/keystone/contrib/ec2/controllers.py b/keystone/contrib/ec2/controllers.py index d24debcc07..4e5a79bf2c 100644 --- a/keystone/contrib/ec2/controllers.py +++ b/keystone/contrib/ec2/controllers.py @@ -44,9 +44,9 @@ from keystone.common import dependency from keystone.common import utils from keystone.common import wsgi from keystone import exception -from keystone import token - +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import jsonutils +from keystone import token @dependency.requires('assignment_api', 'catalog_api', 'credential_api', diff --git a/keystone/contrib/endpoint_filter/backends/sql.py b/keystone/contrib/endpoint_filter/backends/sql.py index 8bf26d2278..a52384de79 100644 --- a/keystone/contrib/endpoint_filter/backends/sql.py +++ b/keystone/contrib/endpoint_filter/backends/sql.py @@ -17,6 +17,7 @@ from keystone.common.sql import migration_helpers from keystone.contrib import endpoint_filter from keystone import exception from keystone.openstack.common.db.sqlalchemy import migration +from keystone.openstack.common.gettextutils import _ class ProjectEndpoint(sql.ModelBase, sql.DictBase): diff --git a/keystone/contrib/example/core.py b/keystone/contrib/example/core.py index 86d1e26448..09e831026e 100644 --- a/keystone/contrib/example/core.py +++ b/keystone/contrib/example/core.py @@ -17,6 +17,7 @@ from keystone.common import dependency from keystone.common import manager from keystone import config from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log diff --git a/keystone/contrib/federation/utils.py b/keystone/contrib/federation/utils.py index 5d7e9c81ee..42918a0a7e 100644 --- a/keystone/contrib/federation/utils.py +++ b/keystone/contrib/federation/utils.py @@ -18,6 +18,7 @@ import jsonschema import six from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log diff --git a/keystone/contrib/oauth1/backends/sql.py b/keystone/contrib/oauth1/backends/sql.py index 5169c3eeb1..79f648f537 100644 --- a/keystone/contrib/oauth1/backends/sql.py +++ b/keystone/contrib/oauth1/backends/sql.py @@ -24,6 +24,7 @@ from keystone.contrib import oauth1 from keystone.contrib.oauth1 import core from keystone import exception from keystone.openstack.common.db.sqlalchemy import migration +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import jsonutils from keystone.openstack.common import timeutils diff --git a/keystone/contrib/oauth1/controllers.py b/keystone/contrib/oauth1/controllers.py index 5d9a60d237..a78cdb9136 100644 --- a/keystone/contrib/oauth1/controllers.py +++ b/keystone/contrib/oauth1/controllers.py @@ -21,6 +21,7 @@ from keystone import config from keystone.contrib.oauth1 import core as oauth1 from keystone.contrib.oauth1 import validator from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import jsonutils from keystone.openstack.common import timeutils diff --git a/keystone/contrib/revoke/controllers.py b/keystone/contrib/revoke/controllers.py index 67b4b1db57..516ee9c413 100644 --- a/keystone/contrib/revoke/controllers.py +++ b/keystone/contrib/revoke/controllers.py @@ -13,6 +13,7 @@ from keystone.common import controller from keystone.common import dependency from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import timeutils diff --git a/keystone/contrib/revoke/core.py b/keystone/contrib/revoke/core.py index 3f97be5607..960db0fca2 100644 --- a/keystone/contrib/revoke/core.py +++ b/keystone/contrib/revoke/core.py @@ -23,6 +23,7 @@ from keystone import config from keystone.contrib.revoke import model from keystone import exception from keystone import notifications +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log from keystone.openstack.common import timeutils diff --git a/keystone/credential/controllers.py b/keystone/credential/controllers.py index ee6081a1b6..ab1fb60028 100644 --- a/keystone/credential/controllers.py +++ b/keystone/credential/controllers.py @@ -19,6 +19,7 @@ from keystone.common import controller from keystone.common import dependency from keystone.common import driver_hints from keystone import exception +from keystone.openstack.common.gettextutils import _ @dependency.requires('credential_api') diff --git a/keystone/credential/core.py b/keystone/credential/core.py index 80b98700e3..a85b7d58e2 100644 --- a/keystone/credential/core.py +++ b/keystone/credential/core.py @@ -22,6 +22,7 @@ from keystone.common import dependency from keystone.common import manager from keystone import config from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log diff --git a/keystone/identity/backends/kvs.py b/keystone/identity/backends/kvs.py index 22dc3e725f..27a107f24a 100644 --- a/keystone/identity/backends/kvs.py +++ b/keystone/identity/backends/kvs.py @@ -16,6 +16,7 @@ from keystone.common import kvs from keystone.common import utils from keystone import exception from keystone import identity +from keystone.openstack.common.gettextutils import _ class _UserIdToDomainId(object): diff --git a/keystone/identity/backends/ldap.py b/keystone/identity/backends/ldap.py index 13aa3f7ee7..be59e57157 100644 --- a/keystone/identity/backends/ldap.py +++ b/keystone/identity/backends/ldap.py @@ -25,6 +25,7 @@ from keystone.common import utils from keystone import config from keystone import exception from keystone import identity +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log diff --git a/keystone/identity/backends/sql.py b/keystone/identity/backends/sql.py index 1562ee2db7..69b8c2c118 100644 --- a/keystone/identity/backends/sql.py +++ b/keystone/identity/backends/sql.py @@ -19,6 +19,7 @@ from keystone.common import utils from keystone import exception from keystone import identity from keystone.openstack.common.db.sqlalchemy import migration +from keystone.openstack.common.gettextutils import _ # Import assignment sql to ensure that the models defined in there are # available for the reference from User and Group to Domain.id. diff --git a/keystone/identity/controllers.py b/keystone/identity/controllers.py index 0224d73074..fe1b391768 100644 --- a/keystone/identity/controllers.py +++ b/keystone/identity/controllers.py @@ -24,6 +24,7 @@ from keystone.common import controller from keystone.common import dependency from keystone import config from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log from keystone.openstack.common import versionutils diff --git a/keystone/identity/core.py b/keystone/identity/core.py index ce02b45b27..a8ef7d5f7a 100644 --- a/keystone/identity/core.py +++ b/keystone/identity/core.py @@ -28,6 +28,7 @@ from keystone.common import manager from keystone import config from keystone import exception from keystone import notifications +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import importutils from keystone.openstack.common import log from keystone.openstack.common import versionutils diff --git a/keystone/middleware/core.py b/keystone/middleware/core.py index 997ae985ae..410cebdf7a 100644 --- a/keystone/middleware/core.py +++ b/keystone/middleware/core.py @@ -21,6 +21,7 @@ from keystone.common import serializer from keystone.common import utils from keystone.common import wsgi from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import jsonutils from keystone.openstack.common import log from keystone.openstack.common import versionutils diff --git a/keystone/notifications.py b/keystone/notifications.py index 84d37d0be2..30c0815e79 100644 --- a/keystone/notifications.py +++ b/keystone/notifications.py @@ -25,6 +25,7 @@ from pycadf import cadftype from pycadf import eventfactory from pycadf import resource +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log notifier_opts = [ diff --git a/keystone/policy/backends/rules.py b/keystone/policy/backends/rules.py index 2f3aa0df49..4f6d608971 100644 --- a/keystone/policy/backends/rules.py +++ b/keystone/policy/backends/rules.py @@ -20,6 +20,7 @@ import os.path from keystone.common import utils from keystone import config from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log from keystone.openstack.common import policy as common_policy from keystone import policy diff --git a/keystone/tests/core.py b/keystone/tests/core.py index aa98d00bef..7c4f699b94 100644 --- a/keystone/tests/core.py +++ b/keystone/tests/core.py @@ -35,15 +35,6 @@ import webob from keystone.openstack.common.fixture import mockpatch from keystone.openstack.common import gettextutils -# NOTE(blk-u): -# gettextutils.install() must run to set _ before importing any modules that -# contain static translated strings. -# -# Configure gettextutils for deferred translation of messages -# so that error messages in responses can be translated according to the -# Accept-Language in the request rather than the Keystone server locale. -gettextutils.install('keystone', lazy=True) - # NOTE(ayoung) # environment.use_eventlet must run before any of the code that will # call the eventlet monkeypatching. @@ -63,6 +54,7 @@ from keystone import notifications from keystone.openstack.common.db import options as db_options from keystone.openstack.common.db.sqlalchemy import migration from keystone.openstack.common.fixture import config as config_fixture +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log from keystone import service from keystone.tests import fixtures as ksfixtures diff --git a/keystone/tests/fakeldap.py b/keystone/tests/fakeldap.py index 7ba5c4481f..8347d68787 100644 --- a/keystone/tests/fakeldap.py +++ b/keystone/tests/fakeldap.py @@ -30,6 +30,7 @@ import six from six import moves from keystone.common import utils +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log diff --git a/keystone/tests/test_kvs.py b/keystone/tests/test_kvs.py index ea05a6f72d..2efc8f6221 100644 --- a/keystone/tests/test_kvs.py +++ b/keystone/tests/test_kvs.py @@ -571,7 +571,7 @@ class KVSTest(tests.TestCase): class TestMemcachedBackend(tests.TestCase): - @mock.patch('__builtin__._', six.text_type) + @mock.patch('keystone.common.kvs.backends.memcached._', six.text_type) def test_invalid_backend_fails_initialization(self): raises_valueerror = matchers.Raises(matchers.MatchesException( ValueError, r'.*FakeBackend.*')) diff --git a/keystone/tests/test_wsgi.py b/keystone/tests/test_wsgi.py index 97b4e8c63d..85f79cb9ec 100644 --- a/keystone/tests/test_wsgi.py +++ b/keystone/tests/test_wsgi.py @@ -23,6 +23,7 @@ from keystone.common import wsgi from keystone import exception from keystone.openstack.common.fixture import moxstubout from keystone.openstack.common import gettextutils +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import jsonutils from keystone import tests diff --git a/keystone/token/backends/kvs.py b/keystone/token/backends/kvs.py index 70e6824c82..395f5ab0e6 100644 --- a/keystone/token/backends/kvs.py +++ b/keystone/token/backends/kvs.py @@ -23,6 +23,7 @@ import six from keystone.common import kvs from keystone import config from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log from keystone.openstack.common import timeutils from keystone import token diff --git a/keystone/token/controllers.py b/keystone/token/controllers.py index 4e1d9e703b..bcae12c324 100644 --- a/keystone/token/controllers.py +++ b/keystone/token/controllers.py @@ -23,6 +23,7 @@ from keystone.common import dependency from keystone.common import wsgi from keystone import config from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log from keystone.openstack.common import timeutils from keystone.token import core diff --git a/keystone/token/core.py b/keystone/token/core.py index 4bd2439d9a..78d2459982 100644 --- a/keystone/token/core.py +++ b/keystone/token/core.py @@ -26,6 +26,7 @@ from keystone.common import dependency from keystone.common import manager from keystone import config from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log from keystone.openstack.common import timeutils from keystone.openstack.common import versionutils diff --git a/keystone/token/provider.py b/keystone/token/provider.py index 6ba310917a..b54e085619 100644 --- a/keystone/token/provider.py +++ b/keystone/token/provider.py @@ -24,6 +24,7 @@ from keystone.common import manager from keystone import config from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log from keystone.openstack.common import timeutils diff --git a/keystone/token/providers/common.py b/keystone/token/providers/common.py index 764eaaec64..753131edf2 100644 --- a/keystone/token/providers/common.py +++ b/keystone/token/providers/common.py @@ -22,6 +22,7 @@ from keystone.common import dependency from keystone import config from keystone.contrib import federation from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone import token from keystone.token import provider from keystone import trust diff --git a/keystone/token/providers/pki.py b/keystone/token/providers/pki.py index e5aeeb49ec..38fbccd488 100644 --- a/keystone/token/providers/pki.py +++ b/keystone/token/providers/pki.py @@ -21,6 +21,7 @@ from keystoneclient.common import cms from keystone.common import environment from keystone import config from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log from keystone.token.providers import common diff --git a/keystone/trust/controllers.py b/keystone/trust/controllers.py index bf8a8af278..51f8fff8b2 100644 --- a/keystone/trust/controllers.py +++ b/keystone/trust/controllers.py @@ -21,6 +21,7 @@ from keystone.common import controller from keystone.common import dependency from keystone import config from keystone import exception +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log from keystone.openstack.common import timeutils diff --git a/keystone/trust/core.py b/keystone/trust/core.py index 344299a2bf..7b132441d4 100644 --- a/keystone/trust/core.py +++ b/keystone/trust/core.py @@ -23,6 +23,7 @@ from keystone.common import manager from keystone import config from keystone import exception from keystone import notifications +from keystone.openstack.common.gettextutils import _ from keystone.openstack.common import log diff --git a/tox.ini b/tox.ini index 93753160d3..85dc09d47c 100644 --- a/tox.ini +++ b/tox.ini @@ -49,3 +49,6 @@ commands= [testenv:sample_config] envdir = {toxworkdir}/venv commands = {toxinidir}/tools/config/generate_sample.sh + +[hacking] +import_exceptions = keystone.openstack.common.gettextutils._