From 7a786674f7b1a383c43b274d525deab5a6379006 Mon Sep 17 00:00:00 2001 From: liu-sheng Date: Fri, 25 Jul 2014 11:56:30 +0800 Subject: [PATCH] Log translation hint for Heat.contrib Currently, Log translation is motivated by oslo's move to prioritized translation of strings, as documented at https://wiki.openstack.org/wiki/LoggingStandards#Log_Translation - add log translation hints for warning, error and info levels - move from LOG.warning to LOG.warn - remove use of % as a string formatter, use the log functionality instead Partial implements blueprint log-translation-hints Change-Id: I8dbb5430507283038939b5665d67615c46b1f72e --- .../heat_docker/resources/docker_container.py | 3 +- .../heat_keystoneclient_v2/client.py | 28 ++++++++++--------- contrib/heat_zaqar/heat_zaqar/client.py | 4 +-- contrib/rackspace/rackspace/clients.py | 9 +++--- .../rackspace/resources/cloud_loadbalancer.py | 3 +- .../rackspace/resources/cloud_server.py | 3 +- .../rackspace/resources/cloudnetworks.py | 5 ++-- 7 files changed, 31 insertions(+), 24 deletions(-) diff --git a/contrib/heat_docker/heat_docker/resources/docker_container.py b/contrib/heat_docker/heat_docker/resources/docker_container.py index 6f52b12640..f298aa3ada 100644 --- a/contrib/heat_docker/heat_docker/resources/docker_container.py +++ b/contrib/heat_docker/heat_docker/resources/docker_container.py @@ -17,6 +17,7 @@ import six from heat.common.i18n import _ +from heat.common.i18n import _LW from heat.engine import attributes from heat.engine import properties from heat.engine import resource @@ -346,5 +347,5 @@ def available_resource_mapping(): if DOCKER_INSTALLED: return resource_mapping() else: - LOG.warn(_("Docker plug-in loaded, but docker lib not installed.")) + LOG.warn(_LW("Docker plug-in loaded, but docker lib not installed.")) return {} diff --git a/contrib/heat_keystoneclient_v2/heat_keystoneclient_v2/client.py b/contrib/heat_keystoneclient_v2/heat_keystoneclient_v2/client.py index 6fd1895221..98bd1a60cd 100644 --- a/contrib/heat_keystoneclient_v2/heat_keystoneclient_v2/client.py +++ b/contrib/heat_keystoneclient_v2/heat_keystoneclient_v2/client.py @@ -20,11 +20,13 @@ from oslo.config import cfg from oslo.utils import importutils from heat.common import exception -from heat.common.i18n import _ +from heat.common.i18n import _LE +from heat.common.i18n import _LI +from heat.common.i18n import _LW from heat.openstack.common import log as logging LOG = logging.getLogger('heat.common.keystoneclient') -LOG.info(_("Keystone V2 loaded")) +LOG.info(_LI("Keystone V2 loaded")) class KeystoneClientV2(object): @@ -87,8 +89,8 @@ class KeystoneClientV2(object): kwargs['tenant_name'] = self.context.tenant kwargs['tenant_id'] = self.context.tenant_id else: - LOG.error(_("Keystone v2 API connection failed, no password " - "or auth_token!")) + LOG.error(_LE("Keystone v2 API connection failed, no password " + "or auth_token!")) raise exception.AuthorizationFailure() kwargs['cacert'] = self._get_client_option('ca_file') kwargs['insecure'] = self._get_client_option('insecure') @@ -102,7 +104,7 @@ class KeystoneClientV2(object): if auth_kwargs: # Sanity check if not client.auth_ref.trust_scoped: - LOG.error(_("v2 trust token re-scoping failed!")) + LOG.error(_LE("v2 trust token re-scoping failed!")) raise exception.AuthorizationFailure() # All OK so update the context with the token self.context.auth_token = client.auth_ref.auth_token @@ -110,8 +112,8 @@ class KeystoneClientV2(object): # Ensure the v2 API we're using is not impacted by keystone # bug #1239303, otherwise we can't trust the user_id if self.context.trustor_user_id != client.auth_ref.user_id: - LOG.error(_("Trust impersonation failed, bug #1239303 " - "suspected, you may need a newer keystone")) + LOG.error(_LE("Trust impersonation failed, bug #1239303 " + "suspected, you may need a newer keystone")) raise exception.AuthorizationFailure() return client @@ -147,8 +149,8 @@ class KeystoneClientV2(object): Returns the keystone ID of the resulting user """ if(len(username) > 64): - LOG.warning(_("Truncating the username %s to the last 64 " - "characters.") % username) + LOG.warn(_LW("Truncating the username %s to the last 64 " + "characters."), username) #get the last 64 characters of the username username = username[-64:] user = self.client.users.create(username, @@ -171,10 +173,10 @@ class KeystoneClientV2(object): self.client.roles.add_user_role(user.id, role_id, self.context.tenant_id) else: - LOG.error(_("Failed to add user %(user)s to role %(role)s, " - "check role exists!") - % {'user': username, - 'role': cfg.CONF.heat_stack_user_role}) + LOG.error(_LE("Failed to add user %(user)s to role %(role)s, " + "check role exists!"), + {'user': username, + 'role': cfg.CONF.heat_stack_user_role}) return user.id diff --git a/contrib/heat_zaqar/heat_zaqar/client.py b/contrib/heat_zaqar/heat_zaqar/client.py index 2405eac67f..2a94d57e75 100644 --- a/contrib/heat_zaqar/heat_zaqar/client.py +++ b/contrib/heat_zaqar/heat_zaqar/client.py @@ -11,7 +11,7 @@ # License for the specific language governing permissions and limitations # under the License. -from heat.common.i18n import _ +from heat.common.i18n import _LE from heat.openstack.common import log as logging LOG = logging.getLogger(__name__) @@ -30,7 +30,7 @@ class ZaqarClientPlugin(client_plugin.ClientPlugin): con = self.context if self.auth_token is None: - LOG.error(_("Zaqar connection failed, no auth_token!")) + LOG.error(_LE("Zaqar connection failed, no auth_token!")) return None opts = { diff --git a/contrib/rackspace/rackspace/clients.py b/contrib/rackspace/rackspace/clients.py index e04158fef7..3471489219 100644 --- a/contrib/rackspace/rackspace/clients.py +++ b/contrib/rackspace/rackspace/clients.py @@ -21,7 +21,8 @@ import urlparse from oslo.config import cfg from heat.common import exception -from heat.common.i18n import _ +from heat.common.i18n import _LI +from heat.common.i18n import _LW from heat.engine.clients import client_plugin from heat.engine.clients.os import cinder from heat.engine.clients.os import glance @@ -57,7 +58,7 @@ class RackspaceClientPlugin(client_plugin.ClientPlugin): """Create an authenticated client context.""" self.pyrax = pyrax.create_context("rackspace") self.pyrax.auth_endpoint = self.context.auth_url - LOG.info(_("Authenticating username: %s") % + LOG.info(_LI("Authenticating username: %s") % self.context.username) tenant = self.context.tenant_id tenant_name = self.context.tenant @@ -65,9 +66,9 @@ class RackspaceClientPlugin(client_plugin.ClientPlugin): tenant_id=tenant, tenant_name=tenant_name) if not self.pyrax.authenticated: - LOG.warn(_("Pyrax Authentication Failed.")) + LOG.warn(_LW("Pyrax Authentication Failed.")) raise exception.AuthorizationFailure() - LOG.info(_("User %s authenticated successfully."), + LOG.info(_LI("User %s authenticated successfully."), self.context.username) diff --git a/contrib/rackspace/rackspace/resources/cloud_loadbalancer.py b/contrib/rackspace/rackspace/resources/cloud_loadbalancer.py index 25f420dac4..1f8dceff08 100644 --- a/contrib/rackspace/rackspace/resources/cloud_loadbalancer.py +++ b/contrib/rackspace/rackspace/resources/cloud_loadbalancer.py @@ -18,6 +18,7 @@ import six from heat.common import exception from heat.common.i18n import _ +from heat.common.i18n import _LI from heat.engine import attributes from heat.engine import constraints from heat.engine import function @@ -672,7 +673,7 @@ class CloudLoadBalancer(resource.Resource): raise exception.InvalidTemplateAttribute(resource=self.name, key=key) function = attribute_function[key] - LOG.info(_('%(name)s.GetAtt(%(key)s) == %(function)s'), + LOG.info(_LI('%(name)s.GetAtt(%(key)s) == %(function)s'), {'name': self.name, 'key': key, 'function': function}) return function diff --git a/contrib/rackspace/rackspace/resources/cloud_server.py b/contrib/rackspace/rackspace/resources/cloud_server.py index 74e6b2ecd8..f66ddfccab 100644 --- a/contrib/rackspace/rackspace/resources/cloud_server.py +++ b/contrib/rackspace/rackspace/resources/cloud_server.py @@ -15,6 +15,7 @@ import copy from heat.common import exception from heat.common.i18n import _ +from heat.common.i18n import _LW from heat.engine import attributes from heat.engine import properties from heat.engine.resources import server @@ -181,7 +182,7 @@ class CloudServer(server.Server): reason = server.metadata.get('rackconnect_unprocessable_reason', None) if reason is not None: - LOG.warning(_("RackConnect unprocessable reason: %s") % reason) + LOG.warn(_LW("RackConnect unprocessable reason: %s"), reason) msg = _("RackConnect automation has completed") self._add_event(self.action, self.status, msg) diff --git a/contrib/rackspace/rackspace/resources/cloudnetworks.py b/contrib/rackspace/rackspace/resources/cloudnetworks.py index 8e8e46c375..8f4effeb6d 100644 --- a/contrib/rackspace/rackspace/resources/cloudnetworks.py +++ b/contrib/rackspace/rackspace/resources/cloudnetworks.py @@ -15,6 +15,7 @@ import netaddr from heat.common import exception from heat.common.i18n import _ +from heat.common.i18n import _LW from heat.engine import attributes from heat.engine import constraints from heat.engine import properties @@ -93,8 +94,8 @@ class CloudNetwork(resource.Resource): try: self._network = self.cloud_networks().get(self.resource_id) except NotFound: - LOG.warn(_("Could not find network %s but resource id is set.") - % self.resource_id) + LOG.warn(_LW("Could not find network %s but resource id is" + " set."), self.resource_id) return self._network def cloud_networks(self):