From 6d0cd621724d1ebce6b090eca5f0c9ed5f350445 Mon Sep 17 00:00:00 2001
From: Ethan Lynn <xjunlin@cn.ibm.com>
Date: Fri, 25 Jul 2014 15:10:38 +0800
Subject: [PATCH] Switch heat resources & db & tests to oslo.i18n

Use oslo.i18n in resources & db & tests directories.

blueprint oslo-i18n

Change-Id: Idaf718b9d762b9ae89d6045557eadb758b552bd5
---
 .../heat_docker/resources/docker_container.py        |  2 +-
 .../heat_keystoneclient_v2/client.py                 |  2 +-
 .../nova_flavor/nova_flavor/resources/nova_flavor.py |  2 +-
 contrib/rackspace/rackspace/clients.py               |  2 +-
 contrib/rackspace/rackspace/resources/cloud_dns.py   |  2 +-
 .../rackspace/resources/cloud_loadbalancer.py        |  2 +-
 .../rackspace/rackspace/resources/cloud_server.py    |  2 +-
 .../rackspace/rackspace/resources/cloudnetworks.py   |  2 +-
 doc/source/ext/resources.py                          |  2 +-
 doc/source/pluginguide.rst                           |  2 +-
 heat/__init__.py                                     |  8 +++++---
 heat/db/sqlalchemy/api.py                            |  2 +-
 .../migrate_repo/versions/029_event_id_to_uuid.py    |  2 +-
 .../versions/037_migrate_hot_template.py             |  2 +-
 .../versions/041_migrate_hot_template_resources.py   |  2 +-
 .../versions/043_migrate_template_versions.py        |  2 +-
 heat/db/sync.py                                      |  6 ++++--
 heat/engine/resources/eip.py                         |  2 +-
 heat/engine/resources/glance_image.py                |  2 +-
 heat/engine/resources/instance.py                    |  2 +-
 heat/engine/resources/internet_gateway.py            |  2 +-
 heat/engine/resources/loadbalancer.py                |  2 +-
 heat/engine/resources/nova_floatingip.py             |  2 +-
 heat/engine/resources/nova_keypair.py                |  2 +-
 heat/engine/resources/nova_servergroup.py            |  2 +-
 heat/engine/resources/nova_utils.py                  |  2 +-
 heat/engine/resources/os_database.py                 |  2 +-
 heat/engine/resources/random_string.py               |  2 +-
 heat/engine/resources/resource_group.py              |  2 +-
 heat/engine/resources/sahara_cluster.py              |  2 +-
 heat/engine/resources/sahara_templates.py            |  2 +-
 heat/engine/resources/server.py                      |  2 +-
 heat/engine/resources/software_config/multi_part.py  |  2 +-
 .../resources/software_config/software_config.py     |  2 +-
 heat/engine/resources/swiftsignal.py                 |  2 +-
 heat/tests/__init__.py                               | 12 ++++++------
 heat/tests/test_resource.py                          |  2 +-
 heat/tests/test_server.py                            |  2 +-
 heat/tests/test_software_deployment.py               |  4 ++--
 39 files changed, 52 insertions(+), 48 deletions(-)

diff --git a/contrib/heat_docker/heat_docker/resources/docker_container.py b/contrib/heat_docker/heat_docker/resources/docker_container.py
index a543a8b9a0..6f52b12640 100644
--- a/contrib/heat_docker/heat_docker/resources/docker_container.py
+++ b/contrib/heat_docker/heat_docker/resources/docker_container.py
@@ -16,10 +16,10 @@
 
 import six
 
+from heat.common.i18n import _
 from heat.engine import attributes
 from heat.engine import properties
 from heat.engine import resource
-from heat.openstack.common.gettextutils import _
 from heat.openstack.common import log as logging
 
 LOG = logging.getLogger(__name__)
diff --git a/contrib/heat_keystoneclient_v2/heat_keystoneclient_v2/client.py b/contrib/heat_keystoneclient_v2/heat_keystoneclient_v2/client.py
index 47887d7f60..81846c6c2e 100644
--- a/contrib/heat_keystoneclient_v2/heat_keystoneclient_v2/client.py
+++ b/contrib/heat_keystoneclient_v2/heat_keystoneclient_v2/client.py
@@ -19,7 +19,7 @@ from keystoneclient.v2_0 import client as kc
 from oslo.config import cfg
 
 from heat.common import exception
-from heat.openstack.common.gettextutils import _
+from heat.common.i18n import _
 from heat.openstack.common import importutils
 from heat.openstack.common import log as logging
 
diff --git a/contrib/nova_flavor/nova_flavor/resources/nova_flavor.py b/contrib/nova_flavor/nova_flavor/resources/nova_flavor.py
index 38c5731706..85e27c30ce 100644
--- a/contrib/nova_flavor/nova_flavor/resources/nova_flavor.py
+++ b/contrib/nova_flavor/nova_flavor/resources/nova_flavor.py
@@ -11,9 +11,9 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+from heat.common.i18n import _
 from heat.engine import properties
 from heat.engine import resource
-from heat.openstack.common.gettextutils import _
 
 
 class NovaFlavor(resource.Resource):
diff --git a/contrib/rackspace/rackspace/clients.py b/contrib/rackspace/rackspace/clients.py
index 8b87796093..9d176a79a6 100644
--- a/contrib/rackspace/rackspace/clients.py
+++ b/contrib/rackspace/rackspace/clients.py
@@ -18,13 +18,13 @@ import urlparse
 from oslo.config import cfg
 
 from heat.common import exception
+from heat.common.i18n import _
 from heat.engine.clients import client_plugin
 from heat.engine.clients.os import cinder
 from heat.engine.clients.os import glance
 from heat.engine.clients.os import nova
 from heat.engine.clients.os import trove
 
-from heat.openstack.common.gettextutils import _
 from heat.openstack.common import log as logging
 
 from glanceclient import client as gc
diff --git a/contrib/rackspace/rackspace/resources/cloud_dns.py b/contrib/rackspace/rackspace/resources/cloud_dns.py
index 26f7e37cdc..8c60d51749 100644
--- a/contrib/rackspace/rackspace/resources/cloud_dns.py
+++ b/contrib/rackspace/rackspace/resources/cloud_dns.py
@@ -14,10 +14,10 @@
 """Resources for Rackspace DNS."""
 
 from heat.common import exception
+from heat.common.i18n import _
 from heat.engine import constraints
 from heat.engine import properties
 from heat.engine import resource
-from heat.openstack.common.gettextutils import _
 from heat.openstack.common import log as logging
 
 try:
diff --git a/contrib/rackspace/rackspace/resources/cloud_loadbalancer.py b/contrib/rackspace/rackspace/resources/cloud_loadbalancer.py
index 99b62ad90e..3c3188a8d4 100644
--- a/contrib/rackspace/rackspace/resources/cloud_loadbalancer.py
+++ b/contrib/rackspace/rackspace/resources/cloud_loadbalancer.py
@@ -17,6 +17,7 @@ import itertools
 import six
 
 from heat.common import exception
+from heat.common.i18n import _
 from heat.engine import attributes
 from heat.engine import constraints
 from heat.engine import function
@@ -24,7 +25,6 @@ from heat.engine import properties
 from heat.engine.properties import Properties
 from heat.engine import resource
 from heat.engine import scheduler
-from heat.openstack.common.gettextutils import _
 from heat.openstack.common import log as logging
 
 try:
diff --git a/contrib/rackspace/rackspace/resources/cloud_server.py b/contrib/rackspace/rackspace/resources/cloud_server.py
index 8ed0d8dd90..74e6b2ecd8 100644
--- a/contrib/rackspace/rackspace/resources/cloud_server.py
+++ b/contrib/rackspace/rackspace/resources/cloud_server.py
@@ -14,10 +14,10 @@
 import copy
 
 from heat.common import exception
+from heat.common.i18n import _
 from heat.engine import attributes
 from heat.engine import properties
 from heat.engine.resources import server
-from heat.openstack.common.gettextutils import _
 from heat.openstack.common import log as logging
 
 try:
diff --git a/contrib/rackspace/rackspace/resources/cloudnetworks.py b/contrib/rackspace/rackspace/resources/cloudnetworks.py
index 83c7836970..e86c991fc1 100644
--- a/contrib/rackspace/rackspace/resources/cloudnetworks.py
+++ b/contrib/rackspace/rackspace/resources/cloudnetworks.py
@@ -14,11 +14,11 @@
 import netaddr
 
 from heat.common import exception
+from heat.common.i18n import _
 from heat.engine import attributes
 from heat.engine import constraints
 from heat.engine import properties
 from heat.engine import resource
-from heat.openstack.common.gettextutils import _
 from heat.openstack.common import log as logging
 
 try:
diff --git a/doc/source/ext/resources.py b/doc/source/ext/resources.py
index 4a11a77ac3..6e3e51af66 100644
--- a/doc/source/ext/resources.py
+++ b/doc/source/ext/resources.py
@@ -19,13 +19,13 @@ from docutils import nodes
 import pydoc
 from sphinx.util.compat import Directive
 
+from heat.common.i18n import _
 from heat.engine import attributes
 from heat.engine import environment
 from heat.engine import plugin_manager
 from heat.engine import properties
 from heat.engine import resources
 from heat.engine import support
-from heat.openstack.common.gettextutils import _
 
 
 global_env = environment.Environment({}, user_env=False)
diff --git a/doc/source/pluginguide.rst b/doc/source/pluginguide.rst
index dc20fe0d01..4a628df520 100644
--- a/doc/source/pluginguide.rst
+++ b/doc/source/pluginguide.rst
@@ -108,9 +108,9 @@ plug-in.
 
 .. code-block:: python
 
+    from heat.common.i18n import _
     from heat.engine import constraints
     from heat.engine import properties
-    from heat.openstack.common.gettextutils import _
 
         nested_schema = {
             "foo": properties.Schema(
diff --git a/heat/__init__.py b/heat/__init__.py
index d8d8a52521..6f4f38fc97 100644
--- a/heat/__init__.py
+++ b/heat/__init__.py
@@ -14,7 +14,9 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-from heat.openstack.common import gettextutils
+from oslo import i18n
 
-gettextutils.enable_lazy()
-gettextutils.install('heat', lazy=True)
+i18n.enable_lazy()
+# fixme(elynn): Since install() is deprecated, we should remove it in
+# the future
+i18n.install('heat')
diff --git a/heat/db/sqlalchemy/api.py b/heat/db/sqlalchemy/api.py
index 377a8c078e..9dfb623587 100644
--- a/heat/db/sqlalchemy/api.py
+++ b/heat/db/sqlalchemy/api.py
@@ -25,10 +25,10 @@ from sqlalchemy.orm.session import Session
 
 from heat.common import crypt
 from heat.common import exception
+from heat.common.i18n import _
 from heat.db.sqlalchemy import filters as db_filters
 from heat.db.sqlalchemy import migration
 from heat.db.sqlalchemy import models
-from heat.openstack.common.gettextutils import _
 
 CONF = cfg.CONF
 CONF.import_opt('max_events_per_stack', 'heat.common.config')
diff --git a/heat/db/sqlalchemy/migrate_repo/versions/029_event_id_to_uuid.py b/heat/db/sqlalchemy/migrate_repo/versions/029_event_id_to_uuid.py
index 0e5f9cad31..4653c22a78 100644
--- a/heat/db/sqlalchemy/migrate_repo/versions/029_event_id_to_uuid.py
+++ b/heat/db/sqlalchemy/migrate_repo/versions/029_event_id_to_uuid.py
@@ -16,7 +16,7 @@ import uuid
 from migrate.versioning import util as migrate_util
 import sqlalchemy
 
-from heat.openstack.common.gettextutils import _
+from heat.common.i18n import _
 
 
 def upgrade(migrate_engine):
diff --git a/heat/db/sqlalchemy/migrate_repo/versions/037_migrate_hot_template.py b/heat/db/sqlalchemy/migrate_repo/versions/037_migrate_hot_template.py
index e2dbed34c9..5b3f26ae2d 100644
--- a/heat/db/sqlalchemy/migrate_repo/versions/037_migrate_hot_template.py
+++ b/heat/db/sqlalchemy/migrate_repo/versions/037_migrate_hot_template.py
@@ -17,9 +17,9 @@ from migrate.versioning import util as migrate_util
 import six
 from sqlalchemy.orm import sessionmaker
 
+from heat.common.i18n import _
 from heat.db.sqlalchemy import models
 from heat.engine.hot.parameters import HOTParamSchema
-from heat.openstack.common.gettextutils import _
 
 
 def upgrade(migrate_engine):
diff --git a/heat/db/sqlalchemy/migrate_repo/versions/041_migrate_hot_template_resources.py b/heat/db/sqlalchemy/migrate_repo/versions/041_migrate_hot_template_resources.py
index 39bb625983..93417af502 100644
--- a/heat/db/sqlalchemy/migrate_repo/versions/041_migrate_hot_template_resources.py
+++ b/heat/db/sqlalchemy/migrate_repo/versions/041_migrate_hot_template_resources.py
@@ -16,8 +16,8 @@ from migrate.versioning import util as migrate_util
 import six
 from sqlalchemy.orm import sessionmaker
 
+from heat.common.i18n import _
 from heat.db.sqlalchemy import models
-from heat.openstack.common.gettextutils import _
 
 
 def upgrade(migrate_engine):
diff --git a/heat/db/sqlalchemy/migrate_repo/versions/043_migrate_template_versions.py b/heat/db/sqlalchemy/migrate_repo/versions/043_migrate_template_versions.py
index 95ff1483ae..5fa7f730db 100644
--- a/heat/db/sqlalchemy/migrate_repo/versions/043_migrate_template_versions.py
+++ b/heat/db/sqlalchemy/migrate_repo/versions/043_migrate_template_versions.py
@@ -16,8 +16,8 @@ import time
 from migrate.versioning import util as migrate_util
 from sqlalchemy.orm import sessionmaker
 
+from heat.common.i18n import _
 from heat.db.sqlalchemy import models
-from heat.openstack.common.gettextutils import _
 
 
 def upgrade(migrate_engine):
diff --git a/heat/db/sync.py b/heat/db/sync.py
index e0e1e012b3..e72293949a 100755
--- a/heat/db/sync.py
+++ b/heat/db/sync.py
@@ -17,12 +17,14 @@ from __future__ import print_function
 import sys
 
 from oslo.config import cfg
+from oslo import i18n
 
 from heat.db import migration
-from heat.openstack.common import gettextutils
 from heat.openstack.common import log as logging
 
-gettextutils.install('heat')
+# fixme(elynn): Since install() is deprecated, we should remove it in
+# the future
+i18n.install('heat')
 
 LOG = logging.getLogger(__name__)
 
diff --git a/heat/engine/resources/eip.py b/heat/engine/resources/eip.py
index be78c803a4..549ec1e257 100644
--- a/heat/engine/resources/eip.py
+++ b/heat/engine/resources/eip.py
@@ -12,13 +12,13 @@
 #    under the License.
 
 from heat.common import exception
+from heat.common.i18n import _
 from heat.engine import attributes
 from heat.engine import constraints
 from heat.engine import properties
 from heat.engine import resource
 from heat.engine.resources.vpc import VPC
 from heat.openstack.common import excutils
-from heat.openstack.common.gettextutils import _
 from heat.openstack.common import log as logging
 
 LOG = logging.getLogger(__name__)
diff --git a/heat/engine/resources/glance_image.py b/heat/engine/resources/glance_image.py
index fcbe1d58ed..69dfb071dd 100644
--- a/heat/engine/resources/glance_image.py
+++ b/heat/engine/resources/glance_image.py
@@ -11,10 +11,10 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+from heat.common.i18n import _
 from heat.engine import constraints
 from heat.engine import properties
 from heat.engine import resource
-from heat.openstack.common.gettextutils import _
 
 
 class GlanceImage(resource.Resource):
diff --git a/heat/engine/resources/instance.py b/heat/engine/resources/instance.py
index 755ec78a67..b756b2b2c8 100644
--- a/heat/engine/resources/instance.py
+++ b/heat/engine/resources/instance.py
@@ -17,6 +17,7 @@ from oslo.config import cfg
 import six
 
 from heat.common import exception
+from heat.common.i18n import _
 from heat.engine import attributes
 from heat.engine import constraints
 from heat.engine import properties
@@ -24,7 +25,6 @@ from heat.engine import resource
 from heat.engine.resources import volume
 from heat.engine import scheduler
 from heat.engine import signal_responder
-from heat.openstack.common.gettextutils import _
 from heat.openstack.common import log as logging
 
 cfg.CONF.import_opt('instance_user', 'heat.common.config')
diff --git a/heat/engine/resources/internet_gateway.py b/heat/engine/resources/internet_gateway.py
index 4cf11746bd..efce1bf692 100644
--- a/heat/engine/resources/internet_gateway.py
+++ b/heat/engine/resources/internet_gateway.py
@@ -12,10 +12,10 @@
 #    under the License.
 
 from heat.common import exception
+from heat.common.i18n import _
 from heat.engine import properties
 from heat.engine import resource
 from heat.engine.resources import route_table
-from heat.openstack.common.gettextutils import _
 
 
 class InternetGateway(resource.Resource):
diff --git a/heat/engine/resources/loadbalancer.py b/heat/engine/resources/loadbalancer.py
index e211c5207f..be0658bb02 100644
--- a/heat/engine/resources/loadbalancer.py
+++ b/heat/engine/resources/loadbalancer.py
@@ -15,12 +15,12 @@ import os
 from oslo.config import cfg
 
 from heat.common import exception
+from heat.common.i18n import _
 from heat.common import template_format
 from heat.engine import attributes
 from heat.engine import constraints
 from heat.engine import properties
 from heat.engine import stack_resource
-from heat.openstack.common.gettextutils import _
 from heat.openstack.common import log as logging
 
 LOG = logging.getLogger(__name__)
diff --git a/heat/engine/resources/nova_floatingip.py b/heat/engine/resources/nova_floatingip.py
index 0d75a87893..4adb955d7b 100644
--- a/heat/engine/resources/nova_floatingip.py
+++ b/heat/engine/resources/nova_floatingip.py
@@ -11,11 +11,11 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+from heat.common.i18n import _
 from heat.engine import attributes
 from heat.engine import properties
 from heat.engine import resource
 from heat.openstack.common import excutils
-from heat.openstack.common.gettextutils import _
 from heat.openstack.common import log as logging
 
 LOG = logging.getLogger(__name__)
diff --git a/heat/engine/resources/nova_keypair.py b/heat/engine/resources/nova_keypair.py
index 1b6fadb6d3..d8940584aa 100644
--- a/heat/engine/resources/nova_keypair.py
+++ b/heat/engine/resources/nova_keypair.py
@@ -12,11 +12,11 @@
 #    under the License.
 
 from heat.common import exception
+from heat.common.i18n import _
 from heat.engine import attributes
 from heat.engine import constraints
 from heat.engine import properties
 from heat.engine import resource
-from heat.openstack.common.gettextutils import _
 
 
 class KeyPair(resource.Resource):
diff --git a/heat/engine/resources/nova_servergroup.py b/heat/engine/resources/nova_servergroup.py
index e454476d1e..dbae1d3cc7 100644
--- a/heat/engine/resources/nova_servergroup.py
+++ b/heat/engine/resources/nova_servergroup.py
@@ -10,10 +10,10 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+from heat.common.i18n import _
 from heat.engine import constraints
 from heat.engine import properties
 from heat.engine import resource
-from heat.openstack.common.gettextutils import _
 
 
 class ServerGroup(resource.Resource):
diff --git a/heat/engine/resources/nova_utils.py b/heat/engine/resources/nova_utils.py
index c418b8d2ab..d4cb5a7651 100644
--- a/heat/engine/resources/nova_utils.py
+++ b/heat/engine/resources/nova_utils.py
@@ -27,8 +27,8 @@ from six.moves.urllib import parse as urlparse
 import warnings
 
 from heat.common import exception
+from heat.common.i18n import _
 from heat.engine import scheduler
-from heat.openstack.common.gettextutils import _
 from heat.openstack.common import log as logging
 
 LOG = logging.getLogger(__name__)
diff --git a/heat/engine/resources/os_database.py b/heat/engine/resources/os_database.py
index 22b69268b6..ecc9267493 100644
--- a/heat/engine/resources/os_database.py
+++ b/heat/engine/resources/os_database.py
@@ -12,11 +12,11 @@
 #    under the License.
 
 from heat.common import exception
+from heat.common.i18n import _
 from heat.engine import attributes
 from heat.engine import constraints
 from heat.engine import properties
 from heat.engine import resource
-from heat.openstack.common.gettextutils import _
 from heat.openstack.common import log as logging
 from heat.openstack.common import uuidutils
 
diff --git a/heat/engine/resources/random_string.py b/heat/engine/resources/random_string.py
index c8a340fc3f..2ed5bc054d 100644
--- a/heat/engine/resources/random_string.py
+++ b/heat/engine/resources/random_string.py
@@ -17,12 +17,12 @@ import string
 from six.moves import xrange
 
 from heat.common import exception
+from heat.common.i18n import _
 from heat.engine import attributes
 from heat.engine import constraints
 from heat.engine import properties
 from heat.engine import resource
 from heat.engine import support
-from heat.openstack.common.gettextutils import _
 
 
 class RandomString(resource.Resource):
diff --git a/heat/engine/resources/resource_group.py b/heat/engine/resources/resource_group.py
index 7a1683a3a8..e24a49b24d 100644
--- a/heat/engine/resources/resource_group.py
+++ b/heat/engine/resources/resource_group.py
@@ -15,12 +15,12 @@ import collections
 import copy
 
 from heat.common import exception
+from heat.common.i18n import _
 from heat.engine import attributes
 from heat.engine import constraints
 from heat.engine import properties
 from heat.engine import stack_resource
 from heat.engine import template
-from heat.openstack.common.gettextutils import _
 
 template_template = {
     "heat_template_version": "2013-05-23",
diff --git a/heat/engine/resources/sahara_cluster.py b/heat/engine/resources/sahara_cluster.py
index 7cc0184293..c2e50553f9 100644
--- a/heat/engine/resources/sahara_cluster.py
+++ b/heat/engine/resources/sahara_cluster.py
@@ -14,11 +14,11 @@
 # limitations under the License.
 
 from heat.common import exception
+from heat.common.i18n import _
 from heat.engine import attributes
 from heat.engine import constraints
 from heat.engine import properties
 from heat.engine import resource
-from heat.openstack.common.gettextutils import _
 from heat.openstack.common import log as logging
 
 LOG = logging.getLogger(__name__)
diff --git a/heat/engine/resources/sahara_templates.py b/heat/engine/resources/sahara_templates.py
index c53e790bae..fb5f02e48d 100644
--- a/heat/engine/resources/sahara_templates.py
+++ b/heat/engine/resources/sahara_templates.py
@@ -14,10 +14,10 @@
 # limitations under the License.
 
 from heat.common import exception
+from heat.common.i18n import _
 from heat.engine import constraints
 from heat.engine import properties
 from heat.engine import resource
-from heat.openstack.common.gettextutils import _
 from heat.openstack.common import log as logging
 
 LOG = logging.getLogger(__name__)
diff --git a/heat/engine/resources/server.py b/heat/engine/resources/server.py
index b5b5c04d1a..87c5496d76 100644
--- a/heat/engine/resources/server.py
+++ b/heat/engine/resources/server.py
@@ -17,6 +17,7 @@ import uuid
 from oslo.config import cfg
 
 from heat.common import exception
+from heat.common.i18n import _
 from heat.engine import attributes
 from heat.engine import constraints
 from heat.engine import properties
@@ -25,7 +26,6 @@ from heat.engine.resources.neutron import subnet
 from heat.engine import scheduler
 from heat.engine import stack_user
 from heat.engine import support
-from heat.openstack.common.gettextutils import _
 from heat.openstack.common import jsonutils
 from heat.openstack.common import log as logging
 from heat.openstack.common import uuidutils
diff --git a/heat/engine/resources/software_config/multi_part.py b/heat/engine/resources/software_config/multi_part.py
index fb9f80cd01..a16b1e71cd 100644
--- a/heat/engine/resources/software_config/multi_part.py
+++ b/heat/engine/resources/software_config/multi_part.py
@@ -16,10 +16,10 @@ from email.mime.multipart import MIMEMultipart
 from email.mime.text import MIMEText
 import os
 
+from heat.common.i18n import _
 from heat.engine import constraints
 from heat.engine import properties
 from heat.engine.resources.software_config import software_config
-from heat.openstack.common.gettextutils import _
 
 
 class MultipartMime(software_config.SoftwareConfig):
diff --git a/heat/engine/resources/software_config/software_config.py b/heat/engine/resources/software_config/software_config.py
index 39f81eca18..5724fee03e 100644
--- a/heat/engine/resources/software_config/software_config.py
+++ b/heat/engine/resources/software_config/software_config.py
@@ -11,11 +11,11 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+from heat.common.i18n import _
 from heat.engine import attributes
 from heat.engine import constraints
 from heat.engine import properties
 from heat.engine import resource
-from heat.openstack.common.gettextutils import _
 from heat.openstack.common import log as logging
 
 LOG = logging.getLogger(__name__)
diff --git a/heat/engine/resources/swiftsignal.py b/heat/engine/resources/swiftsignal.py
index 364fe51ca3..ba85f37e4b 100644
--- a/heat/engine/resources/swiftsignal.py
+++ b/heat/engine/resources/swiftsignal.py
@@ -17,13 +17,13 @@ import urlparse
 from swiftclient import client as swiftclient_client
 
 from heat.common import exception
+from heat.common.i18n import _
 from heat.engine import attributes
 from heat.engine.clients.os import swift
 from heat.engine import constraints
 from heat.engine import properties
 from heat.engine import resource
 from heat.engine import scheduler
-from heat.openstack.common.gettextutils import _
 from heat.openstack.common import log as logging
 
 LOG = logging.getLogger(__name__)
diff --git a/heat/tests/__init__.py b/heat/tests/__init__.py
index a71838bbe6..ad326ca748 100644
--- a/heat/tests/__init__.py
+++ b/heat/tests/__init__.py
@@ -11,18 +11,18 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-# See http://code.google.com/p/python-nose/issues/detail?id=373
-# The code below enables nosetests to work with i18n _() blocks
-from heat.openstack.common import gettextutils
+from oslo import i18n
 
 
 def fake_translate_msgid(msgid, domain, desired_locale=None):
     return msgid
 
-gettextutils.enable_lazy()
-gettextutils.install('heat', lazy=True)
+i18n.enable_lazy()
+# fixme(elynn): Since install() is deprecated, we should remove it in
+# the future
+i18n.install('heat')
 
 #To ensure messages don't really get translated while running tests.
 #As there are lots of places where matching is expected when comparing
 #exception message(translated) with raw message.
-gettextutils._translate_msgid = fake_translate_msgid
+i18n._translate_msgid = fake_translate_msgid
diff --git a/heat/tests/test_resource.py b/heat/tests/test_resource.py
index dca9a76fb9..d194711a6c 100644
--- a/heat/tests/test_resource.py
+++ b/heat/tests/test_resource.py
@@ -20,6 +20,7 @@ from oslo.config import cfg
 import six
 
 from heat.common import exception
+from heat.common.i18n import _
 from heat.common import short_id
 from heat.common import timeutils
 from heat.db import api as db_api
@@ -32,7 +33,6 @@ from heat.engine import resource
 from heat.engine import rsrc_defn
 from heat.engine import scheduler
 from heat.engine import template
-from heat.openstack.common.gettextutils import _
 from heat.tests.common import HeatTestCase
 from heat.tests import generic_resource as generic_rsrc
 from heat.tests import utils
diff --git a/heat/tests/test_server.py b/heat/tests/test_server.py
index 65884f9820..5a4ece1170 100644
--- a/heat/tests/test_server.py
+++ b/heat/tests/test_server.py
@@ -22,6 +22,7 @@ import mox
 from novaclient import exceptions as nova_exceptions
 
 from heat.common import exception
+from heat.common.i18n import _
 from heat.common import template_format
 from heat.db import api as db_api
 from heat.engine.clients.os import glance
@@ -34,7 +35,6 @@ from heat.engine import resource
 from heat.engine.resources import server as servers
 from heat.engine import scheduler
 from heat.engine import template
-from heat.openstack.common.gettextutils import _
 from heat.openstack.common import uuidutils
 from heat.tests.common import HeatTestCase
 from heat.tests import fakes
diff --git a/heat/tests/test_software_deployment.py b/heat/tests/test_software_deployment.py
index 0303582330..2da3943a6a 100644
--- a/heat/tests/test_software_deployment.py
+++ b/heat/tests/test_software_deployment.py
@@ -18,11 +18,11 @@ import mock
 import six
 
 from heat.common import exception
+from heat.common.i18n import _
 from heat.engine import parser
 from heat.engine.resources.software_config import software_deployment as sd
 from heat.engine import rsrc_defn
 from heat.engine import template
-from heat.openstack.common import gettextutils
 from heat.tests.common import HeatTestCase
 from heat.tests import utils
 
@@ -687,7 +687,7 @@ class SoftwareDeploymentTest(HeatTestCase):
         }, args)
 
         # Test bug 1332355, where details contains a translateable message
-        details = {'failed': gettextutils.Message('need more memory.')}
+        details = {'failed': _('need more memory.')}
         self.deployment.handle_signal(details)
         args = sd.update.call_args[1]
         self.assertEqual({