summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/source/devref/il8n.rst2
-rw-r--r--nova/api/auth.py2
-rw-r--r--nova/api/ec2/__init__.py4
-rw-r--r--nova/api/ec2/cloud.py2
-rw-r--r--nova/api/ec2/ec2utils.py2
-rw-r--r--nova/api/metadata/handler.py2
-rw-r--r--nova/api/metadata/password.py2
-rw-r--r--nova/api/metadata/vendordata_json.py2
-rw-r--r--nova/api/openstack/__init__.py12
-rw-r--r--nova/api/openstack/common.py2
-rw-r--r--nova/api/openstack/compute/contrib/admin_actions.py2
-rw-r--r--nova/api/openstack/compute/contrib/aggregates.py2
-rw-r--r--nova/api/openstack/compute/contrib/assisted_volume_snapshots.py2
-rw-r--r--nova/api/openstack/compute/contrib/attach_interfaces.py2
-rw-r--r--nova/api/openstack/compute/contrib/baremetal_nodes.py2
-rw-r--r--nova/api/openstack/compute/contrib/cells.py2
-rw-r--r--nova/api/openstack/compute/contrib/certificates.py2
-rw-r--r--nova/api/openstack/compute/contrib/cloudpipe.py2
-rw-r--r--nova/api/openstack/compute/contrib/cloudpipe_update.py2
-rw-r--r--nova/api/openstack/compute/contrib/console_auth_tokens.py2
-rw-r--r--nova/api/openstack/compute/contrib/console_output.py2
-rw-r--r--nova/api/openstack/compute/contrib/consoles.py2
-rw-r--r--nova/api/openstack/compute/contrib/disk_config.py2
-rw-r--r--nova/api/openstack/compute/contrib/evacuate.py2
-rw-r--r--nova/api/openstack/compute/contrib/fixed_ips.py2
-rw-r--r--nova/api/openstack/compute/contrib/flavor_access.py2
-rw-r--r--nova/api/openstack/compute/contrib/flavorextraspecs.py2
-rw-r--r--nova/api/openstack/compute/contrib/flavormanage.py2
-rw-r--r--nova/api/openstack/compute/contrib/floating_ip_dns.py2
-rw-r--r--nova/api/openstack/compute/contrib/floating_ips.py2
-rw-r--r--nova/api/openstack/compute/contrib/floating_ips_bulk.py2
-rw-r--r--nova/api/openstack/compute/contrib/fping.py2
-rw-r--r--nova/api/openstack/compute/contrib/hosts.py2
-rw-r--r--nova/api/openstack/compute/contrib/hypervisors.py2
-rw-r--r--nova/api/openstack/compute/contrib/instance_usage_audit_log.py2
-rw-r--r--nova/api/openstack/compute/contrib/keypairs.py2
-rw-r--r--nova/api/openstack/compute/contrib/multinic.py2
-rw-r--r--nova/api/openstack/compute/contrib/networks_associate.py2
-rw-r--r--nova/api/openstack/compute/contrib/os_networks.py2
-rw-r--r--nova/api/openstack/compute/contrib/os_tenant_networks.py2
-rw-r--r--nova/api/openstack/compute/contrib/quota_classes.py2
-rw-r--r--nova/api/openstack/compute/contrib/quotas.py2
-rw-r--r--nova/api/openstack/compute/contrib/rescue.py2
-rw-r--r--nova/api/openstack/compute/contrib/scheduler_hints.py2
-rw-r--r--nova/api/openstack/compute/contrib/security_group_default_rules.py2
-rw-r--r--nova/api/openstack/compute/contrib/security_groups.py2
-rw-r--r--nova/api/openstack/compute/contrib/server_external_events.py2
-rw-r--r--nova/api/openstack/compute/contrib/server_groups.py2
-rw-r--r--nova/api/openstack/compute/contrib/server_start_stop.py2
-rw-r--r--nova/api/openstack/compute/contrib/services.py2
-rw-r--r--nova/api/openstack/compute/contrib/shelve.py2
-rw-r--r--nova/api/openstack/compute/contrib/simple_tenant_usage.py2
-rw-r--r--nova/api/openstack/compute/contrib/volumes.py2
-rw-r--r--nova/api/openstack/compute/extensions.py2
-rw-r--r--nova/api/openstack/compute/flavors.py2
-rw-r--r--nova/api/openstack/compute/image_metadata.py2
-rw-r--r--nova/api/openstack/compute/images.py2
-rw-r--r--nova/api/openstack/compute/ips.py2
-rw-r--r--nova/api/openstack/compute/limits.py2
-rw-r--r--nova/api/openstack/compute/plugins/__init__.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/access_ips.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/admin_actions.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/admin_password.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/aggregates.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/attach_interfaces.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/cells.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/certificates.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/console_auth_tokens.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/console_output.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/evacuate.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/extended_volumes.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/flavor_access.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/flavors.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/hosts.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/hypervisors.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/ips.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/keypairs.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/multiple_create.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/pause_server.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/quota_sets.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/remote_consoles.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/rescue.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/scheduler_hints.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/server_actions.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/server_external_events.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/server_metadata.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/servers.py2
-rw-r--r--nova/api/openstack/compute/plugins/v3/services.py2
-rw-r--r--nova/api/openstack/compute/server_metadata.py2
-rw-r--r--nova/api/openstack/compute/servers.py2
-rw-r--r--nova/api/openstack/compute/views/servers.py2
-rw-r--r--nova/api/openstack/extensions.py2
-rw-r--r--nova/api/openstack/wsgi.py17
-rw-r--r--nova/api/openstack/xmlutil.py2
-rw-r--r--nova/api/sizelimit.py2
-rw-r--r--nova/api/validation/validators.py2
-rw-r--r--nova/block_device.py2
-rw-r--r--nova/cells/filters/target_cell.py2
-rw-r--r--nova/cells/manager.py2
-rw-r--r--nova/cells/messaging.py2
-rw-r--r--nova/cells/rpcapi.py2
-rw-r--r--nova/cells/scheduler.py2
-rw-r--r--nova/cells/state.py2
-rw-r--r--nova/cells/weights/mute_child.py2
-rw-r--r--nova/cloudpipe/pipelib.py2
-rw-r--r--nova/cmd/all.py2
-rw-r--r--nova/cmd/baremetal_deploy_helper.py2
-rw-r--r--nova/cmd/baremetal_manage.py2
-rw-r--r--nova/cmd/compute.py2
-rw-r--r--nova/cmd/dhcpbridge.py2
-rw-r--r--nova/cmd/manage.py2
-rw-r--r--nova/cmd/network.py2
-rw-r--r--nova/compute/api.py2
-rw-r--r--nova/compute/claims.py2
-rw-r--r--nova/compute/flavors.py2
-rw-r--r--nova/compute/manager.py8
-rw-r--r--nova/compute/monitors/__init__.py2
-rw-r--r--nova/compute/monitors/virt/cpu_monitor.py2
-rw-r--r--nova/compute/resource_tracker.py2
-rw-r--r--nova/compute/rpcapi.py2
-rw-r--r--nova/compute/utils.py2
-rw-r--r--nova/conductor/api.py2
-rw-r--r--nova/conductor/manager.py2
-rw-r--r--nova/conductor/tasks/live_migrate.py2
-rw-r--r--nova/console/websocketproxy.py2
-rw-r--r--nova/console/xvp.py2
-rw-r--r--nova/consoleauth/manager.py2
-rw-r--r--nova/context.py2
-rw-r--r--nova/crypto.py2
-rw-r--r--nova/db/api.py2
-rw-r--r--nova/db/sqlalchemy/api.py2
-rw-r--r--nova/db/sqlalchemy/migrate_repo/versions/216_havana.py2
-rw-r--r--nova/db/sqlalchemy/migration.py2
-rw-r--r--nova/db/sqlalchemy/utils.py2
-rw-r--r--nova/debugger.py2
-rw-r--r--nova/exception.py2
-rw-r--r--nova/filters.py2
-rw-r--r--nova/hooks.py2
-rw-r--r--nova/i18n.py66
-rw-r--r--nova/image/download/__init__.py2
-rw-r--r--nova/image/download/file.py2
-rw-r--r--nova/image/glance.py2
-rw-r--r--nova/image/s3.py2
-rw-r--r--nova/ipv6/account_identifier.py2
-rw-r--r--nova/ipv6/rfc2462.py2
-rw-r--r--nova/keymgr/conf_key_mgr.py2
-rw-r--r--nova/keymgr/mock_key_mgr.py2
-rw-r--r--nova/keymgr/single_key_mgr.py2
-rw-r--r--nova/network/api.py2
-rw-r--r--nova/network/base_api.py2
-rw-r--r--nova/network/driver.py2
-rw-r--r--nova/network/floating_ips.py2
-rw-r--r--nova/network/ldapdns.py2
-rw-r--r--nova/network/linux_net.py2
-rw-r--r--nova/network/manager.py2
-rw-r--r--nova/network/minidns.py2
-rw-r--r--nova/network/model.py2
-rw-r--r--nova/network/neutronv2/api.py2
-rw-r--r--nova/network/security_group/neutron_driver.py2
-rw-r--r--nova/network/security_group/security_group_base.py2
-rw-r--r--nova/notifications.py2
-rw-r--r--nova/objects/base.py2
-rw-r--r--nova/objects/block_device.py2
-rw-r--r--nova/objects/fields.py2
-rw-r--r--nova/objects/instance.py2
-rw-r--r--nova/objects/instance_fault.py2
-rw-r--r--nova/objects/instance_info_cache.py2
-rw-r--r--nova/pci/pci_manager.py2
-rw-r--r--nova/quota.py2
-rw-r--r--nova/scheduler/chance.py2
-rw-r--r--nova/scheduler/driver.py2
-rw-r--r--nova/scheduler/filter_scheduler.py2
-rw-r--r--nova/scheduler/filters/compute_filter.py2
-rw-r--r--nova/scheduler/filters/core_filter.py2
-rw-r--r--nova/scheduler/filters/ram_filter.py2
-rw-r--r--nova/scheduler/filters/trusted_filter.py2
-rw-r--r--nova/scheduler/filters/utils.py2
-rw-r--r--nova/scheduler/host_manager.py2
-rw-r--r--nova/scheduler/scheduler_options.py2
-rw-r--r--nova/scheduler/utils.py2
-rw-r--r--nova/service.py2
-rw-r--r--nova/servicegroup/api.py2
-rw-r--r--nova/servicegroup/drivers/db.py2
-rw-r--r--nova/servicegroup/drivers/mc.py2
-rw-r--r--nova/servicegroup/drivers/zk.py2
-rw-r--r--nova/storage/linuxscsi.py2
-rw-r--r--nova/tests/api/openstack/compute/plugins/v3/test_servers.py2
-rw-r--r--nova/tests/api/openstack/compute/test_servers.py2
-rw-r--r--nova/tests/api/openstack/fakes.py2
-rw-r--r--nova/tests/api/openstack/test_faults.py34
-rw-r--r--nova/tests/api/openstack/test_wsgi.py14
-rw-r--r--nova/tests/api/test_auth.py2
-rw-r--r--nova/tests/compute/test_compute.py2
-rw-r--r--nova/tests/compute/test_keypairs.py2
-rw-r--r--nova/tests/db/test_migrations.py2
-rw-r--r--nova/tests/fake_ldap.py2
-rw-r--r--nova/tests/fake_volume.py2
-rw-r--r--nova/tests/integrated/api/client.py2
-rw-r--r--nova/tests/integrated/api_samples_test_base.py2
-rw-r--r--nova/tests/test_exception.py11
-rw-r--r--nova/tests/test_nova_manage.py2
-rw-r--r--nova/tests/virt/hyperv/test_hypervapi.py2
-rw-r--r--nova/tests/virt/libvirt/fakelibvirt.py2
-rw-r--r--nova/tests/virt/vmwareapi/fake.py2
-rw-r--r--nova/tests/virt/vmwareapi/test_ds_util.py2
-rw-r--r--nova/tests/virt/xenapi/image/test_bittorrent.py2
-rw-r--r--nova/tests/virt/xenapi/test_vm_utils.py2
-rw-r--r--nova/utils.py5
-rw-r--r--nova/version.py2
-rw-r--r--nova/virt/baremetal/common.py2
-rw-r--r--nova/virt/baremetal/db/sqlalchemy/api.py2
-rw-r--r--nova/virt/baremetal/db/sqlalchemy/migration.py2
-rw-r--r--nova/virt/baremetal/driver.py2
-rw-r--r--nova/virt/baremetal/iboot_pdu.py2
-rw-r--r--nova/virt/baremetal/ipmi.py2
-rw-r--r--nova/virt/baremetal/pxe.py2
-rw-r--r--nova/virt/baremetal/tilera.py2
-rw-r--r--nova/virt/baremetal/tilera_pdu.py2
-rw-r--r--nova/virt/baremetal/utils.py2
-rw-r--r--nova/virt/baremetal/vif_driver.py2
-rw-r--r--nova/virt/baremetal/virtual_power_driver.py2
-rw-r--r--nova/virt/baremetal/volume_driver.py2
-rw-r--r--nova/virt/block_device.py2
-rw-r--r--nova/virt/disk/api.py2
-rw-r--r--nova/virt/disk/mount/api.py2
-rw-r--r--nova/virt/disk/mount/loop.py2
-rw-r--r--nova/virt/disk/mount/nbd.py2
-rw-r--r--nova/virt/disk/vfs/guestfs.py2
-rw-r--r--nova/virt/disk/vfs/localfs.py2
-rw-r--r--nova/virt/driver.py2
-rw-r--r--nova/virt/event.py2
-rw-r--r--nova/virt/fake.py2
-rw-r--r--nova/virt/firewall.py4
-rw-r--r--nova/virt/hardware.py2
-rw-r--r--nova/virt/hyperv/basevolumeutils.py2
-rw-r--r--nova/virt/hyperv/driver.py2
-rw-r--r--nova/virt/hyperv/imagecache.py2
-rw-r--r--nova/virt/hyperv/livemigrationops.py2
-rw-r--r--nova/virt/hyperv/livemigrationutils.py2
-rw-r--r--nova/virt/hyperv/migrationops.py2
-rw-r--r--nova/virt/hyperv/networkutils.py2
-rw-r--r--nova/virt/hyperv/networkutilsv2.py2
-rw-r--r--nova/virt/hyperv/pathutils.py2
-rw-r--r--nova/virt/hyperv/snapshotops.py2
-rw-r--r--nova/virt/hyperv/vhdutils.py2
-rw-r--r--nova/virt/hyperv/vhdutilsv2.py2
-rw-r--r--nova/virt/hyperv/vmops.py2
-rw-r--r--nova/virt/hyperv/vmutils.py2
-rw-r--r--nova/virt/hyperv/volumeops.py2
-rw-r--r--nova/virt/hyperv/volumeutils.py2
-rw-r--r--nova/virt/hyperv/volumeutilsv2.py2
-rw-r--r--nova/virt/images.py2
-rw-r--r--nova/virt/libvirt/blockinfo.py2
-rw-r--r--nova/virt/libvirt/driver.py8
-rw-r--r--nova/virt/libvirt/firewall.py4
-rw-r--r--nova/virt/libvirt/imagebackend.py4
-rw-r--r--nova/virt/libvirt/imagecache.py6
-rw-r--r--nova/virt/libvirt/lvm.py6
-rw-r--r--nova/virt/libvirt/utils.py6
-rw-r--r--nova/virt/libvirt/vif.py6
-rw-r--r--nova/virt/libvirt/volume.py6
-rw-r--r--nova/virt/storage_users.py2
-rw-r--r--nova/virt/vmwareapi/driver.py3
-rw-r--r--nova/virt/vmwareapi/ds_util.py2
-rw-r--r--nova/virt/vmwareapi/error_util.py2
-rw-r--r--nova/virt/vmwareapi/imagecache.py2
-rw-r--r--nova/virt/vmwareapi/io_util.py2
-rw-r--r--nova/virt/vmwareapi/network_util.py2
-rw-r--r--nova/virt/vmwareapi/vif.py2
-rw-r--r--nova/virt/vmwareapi/vim.py2
-rw-r--r--nova/virt/vmwareapi/vim_util.py2
-rw-r--r--nova/virt/vmwareapi/vm_util.py2
-rw-r--r--nova/virt/vmwareapi/vmops.py2
-rw-r--r--nova/virt/vmwareapi/volumeops.py2
-rw-r--r--nova/virt/xenapi/agent.py2
-rw-r--r--nova/virt/xenapi/client/session.py2
-rw-r--r--nova/virt/xenapi/driver.py2
-rw-r--r--nova/virt/xenapi/fake.py2
-rw-r--r--nova/virt/xenapi/host.py2
-rw-r--r--nova/virt/xenapi/image/bittorrent.py2
-rw-r--r--nova/virt/xenapi/network_utils.py2
-rw-r--r--nova/virt/xenapi/pool.py2
-rw-r--r--nova/virt/xenapi/vif.py2
-rw-r--r--nova/virt/xenapi/vm_utils.py2
-rw-r--r--nova/virt/xenapi/vmops.py2
-rw-r--r--nova/virt/xenapi/volume_utils.py2
-rw-r--r--nova/virt/xenapi/volumeops.py2
-rw-r--r--nova/vnc/xvp_proxy.py2
-rw-r--r--nova/volume/cinder.py2
-rw-r--r--nova/volume/encryptors/__init__.py2
-rw-r--r--nova/wsgi.py2
-rw-r--r--requirements.txt1
-rwxr-xr-xtools/db/schema_diff.py2
-rw-r--r--tools/esx/guest_tool.py2
-rw-r--r--tox.ini2
296 files changed, 411 insertions, 366 deletions
diff --git a/doc/source/devref/il8n.rst b/doc/source/devref/il8n.rst
index 0073950551..3898e5302c 100644
--- a/doc/source/devref/il8n.rst
+++ b/doc/source/devref/il8n.rst
@@ -21,4 +21,4 @@ in nova/tests/test_localization.py.
The ``_()`` function is found by doing::
- from nova.openstack.common.gettextutils import _
+ from nova.i18n import _
diff --git a/nova/api/auth.py b/nova/api/auth.py
index b0015cce2b..c2efb97033 100644
--- a/nova/api/auth.py
+++ b/nova/api/auth.py
@@ -21,7 +21,7 @@ import webob.dec
import webob.exc
from nova import context
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova.openstack.common.middleware import request_id
diff --git a/nova/api/ec2/__init__.py b/nova/api/ec2/__init__.py
index 358e7c91e7..036c6bff7d 100644
--- a/nova/api/ec2/__init__.py
+++ b/nova/api/ec2/__init__.py
@@ -32,8 +32,8 @@ from nova.api.ec2 import faults
from nova.api import validator
from nova import context
from nova import exception
-from nova.openstack.common.gettextutils import _
-from nova.openstack.common.gettextutils import _LE
+from nova.i18n import _
+from nova.i18n import _LE
from nova.openstack.common import importutils
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
diff --git a/nova/api/ec2/cloud.py b/nova/api/ec2/cloud.py
index f6afb1f123..aea4c7aafe 100644
--- a/nova/api/ec2/cloud.py
+++ b/nova/api/ec2/cloud.py
@@ -38,12 +38,12 @@ from nova.compute import api as compute_api
from nova.compute import vm_states
from nova import db
from nova import exception
+from nova.i18n import _
from nova.image import s3
from nova import network
from nova.network.security_group import neutron_driver
from nova import objects
from nova.objects import base as obj_base
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
from nova import quota
diff --git a/nova/api/ec2/ec2utils.py b/nova/api/ec2/ec2utils.py
index 97cbe5627a..88bf255764 100644
--- a/nova/api/ec2/ec2utils.py
+++ b/nova/api/ec2/ec2utils.py
@@ -21,10 +21,10 @@ from nova import availability_zones
from nova import context
from nova import db
from nova import exception
+from nova.i18n import _
from nova.network import model as network_model
from nova import objects
from nova.objects import base as obj_base
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import memorycache
from nova.openstack.common import timeutils
diff --git a/nova/api/metadata/handler.py b/nova/api/metadata/handler.py
index 29c0443b29..d93296621e 100644
--- a/nova/api/metadata/handler.py
+++ b/nova/api/metadata/handler.py
@@ -27,7 +27,7 @@ import webob.exc
from nova.api.metadata import base
from nova import conductor
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.openstack.common import memorycache
from nova import utils
diff --git a/nova/api/metadata/password.py b/nova/api/metadata/password.py
index ec32d29e84..6e067797b0 100644
--- a/nova/api/metadata/password.py
+++ b/nova/api/metadata/password.py
@@ -16,8 +16,8 @@
from webob import exc
from nova import context
+from nova.i18n import _
from nova import objects
-from nova.openstack.common.gettextutils import _
from nova import utils
diff --git a/nova/api/metadata/vendordata_json.py b/nova/api/metadata/vendordata_json.py
index 55edd55120..b8e4e53cdd 100644
--- a/nova/api/metadata/vendordata_json.py
+++ b/nova/api/metadata/vendordata_json.py
@@ -20,7 +20,7 @@ import errno
from oslo.config import cfg
from nova.api.metadata import base
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
diff --git a/nova/api/openstack/__init__.py b/nova/api/openstack/__init__.py
index cac785241d..b8d6e6568e 100644
--- a/nova/api/openstack/__init__.py
+++ b/nova/api/openstack/__init__.py
@@ -27,9 +27,9 @@ import webob.exc
from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova import exception
+from nova.i18n import _
+from nova.i18n import translate
from nova import notifications
-from nova.openstack.common import gettextutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova import utils
from nova import wsgi as base_wsgi
@@ -107,12 +107,8 @@ class FaultWrapper(base_wsgi.Middleware):
# inconsistent with the EC2 API to hide every exception,
# including those that are safe to expose, see bug 1021373
if safe:
- if isinstance(inner.msg_fmt, gettextutils.Message):
- user_locale = req.best_match_language()
- inner_msg = gettextutils.translate(
- inner.msg_fmt, user_locale)
- else:
- inner_msg = unicode(inner)
+ user_locale = req.best_match_language()
+ inner_msg = translate(inner.message, user_locale)
outer.explanation = '%s: %s' % (inner.__class__.__name__,
inner_msg)
diff --git a/nova/api/openstack/common.py b/nova/api/openstack/common.py
index d0105e57d7..ef46f3cb72 100644
--- a/nova/api/openstack/common.py
+++ b/nova/api/openstack/common.py
@@ -29,7 +29,7 @@ from nova.compute import task_states
from nova.compute import utils as compute_utils
from nova.compute import vm_states
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova import quota
diff --git a/nova/api/openstack/compute/contrib/admin_actions.py b/nova/api/openstack/compute/contrib/admin_actions.py
index 4092cbbeaf..9f356f7852 100644
--- a/nova/api/openstack/compute/contrib/admin_actions.py
+++ b/nova/api/openstack/compute/contrib/admin_actions.py
@@ -24,7 +24,7 @@ from nova.api.openstack import wsgi
from nova import compute
from nova.compute import vm_states
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.openstack.common import strutils
diff --git a/nova/api/openstack/compute/contrib/aggregates.py b/nova/api/openstack/compute/contrib/aggregates.py
index c5435c5f21..f062c00cae 100644
--- a/nova/api/openstack/compute/contrib/aggregates.py
+++ b/nova/api/openstack/compute/contrib/aggregates.py
@@ -22,7 +22,7 @@ from webob import exc
from nova.api.openstack import extensions
from nova.compute import api as compute_api
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova import utils
diff --git a/nova/api/openstack/compute/contrib/assisted_volume_snapshots.py b/nova/api/openstack/compute/contrib/assisted_volume_snapshots.py
index b54008c278..76ea7d10e1 100644
--- a/nova/api/openstack/compute/contrib/assisted_volume_snapshots.py
+++ b/nova/api/openstack/compute/contrib/assisted_volume_snapshots.py
@@ -19,7 +19,7 @@ from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
from nova import compute
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
diff --git a/nova/api/openstack/compute/contrib/attach_interfaces.py b/nova/api/openstack/compute/contrib/attach_interfaces.py
index fdc6441b47..f3b4761724 100644
--- a/nova/api/openstack/compute/contrib/attach_interfaces.py
+++ b/nova/api/openstack/compute/contrib/attach_interfaces.py
@@ -21,8 +21,8 @@ from webob import exc
from nova.api.openstack import extensions
from nova import compute
from nova import exception
+from nova.i18n import _
from nova import network
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
diff --git a/nova/api/openstack/compute/contrib/baremetal_nodes.py b/nova/api/openstack/compute/contrib/baremetal_nodes.py
index 22a3faa98c..bff5a45be0 100644
--- a/nova/api/openstack/compute/contrib/baremetal_nodes.py
+++ b/nova/api/openstack/compute/contrib/baremetal_nodes.py
@@ -22,7 +22,7 @@ from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.virt.baremetal import db
authorize = extensions.extension_authorizer('compute', 'baremetal_nodes')
diff --git a/nova/api/openstack/compute/contrib/cells.py b/nova/api/openstack/compute/contrib/cells.py
index 3937c24338..fa2661f10c 100644
--- a/nova/api/openstack/compute/contrib/cells.py
+++ b/nova/api/openstack/compute/contrib/cells.py
@@ -28,7 +28,7 @@ from nova.api.openstack import xmlutil
from nova.cells import rpcapi as cells_rpcapi
from nova.compute import api as compute
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.openstack.common import strutils
from nova.openstack.common import timeutils
diff --git a/nova/api/openstack/compute/contrib/certificates.py b/nova/api/openstack/compute/contrib/certificates.py
index a483c44085..9f1131aae6 100644
--- a/nova/api/openstack/compute/contrib/certificates.py
+++ b/nova/api/openstack/compute/contrib/certificates.py
@@ -18,7 +18,7 @@ from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
import nova.cert.rpcapi
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
authorize = extensions.extension_authorizer('compute', 'certificates')
diff --git a/nova/api/openstack/compute/contrib/cloudpipe.py b/nova/api/openstack/compute/contrib/cloudpipe.py
index ec24a56a13..c10c45b7f2 100644
--- a/nova/api/openstack/compute/contrib/cloudpipe.py
+++ b/nova/api/openstack/compute/contrib/cloudpipe.py
@@ -25,9 +25,9 @@ from nova import compute
from nova.compute import utils as compute_utils
from nova.compute import vm_states
from nova import exception
+from nova.i18n import _
from nova import network
from nova.openstack.common import fileutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import timeutils
from nova import utils
diff --git a/nova/api/openstack/compute/contrib/cloudpipe_update.py b/nova/api/openstack/compute/contrib/cloudpipe_update.py
index 7ee8f14d7a..e601eb282a 100644
--- a/nova/api/openstack/compute/contrib/cloudpipe_update.py
+++ b/nova/api/openstack/compute/contrib/cloudpipe_update.py
@@ -17,8 +17,8 @@ import webob.exc
from nova.api.openstack import extensions
from nova.api.openstack import wsgi
+from nova.i18n import _
from nova import objects
-from nova.openstack.common.gettextutils import _
authorize = extensions.extension_authorizer('compute', 'cloudpipe_update')
diff --git a/nova/api/openstack/compute/contrib/console_auth_tokens.py b/nova/api/openstack/compute/contrib/console_auth_tokens.py
index 681cb8577e..a56e636b89 100644
--- a/nova/api/openstack/compute/contrib/console_auth_tokens.py
+++ b/nova/api/openstack/compute/contrib/console_auth_tokens.py
@@ -18,7 +18,7 @@ import webob
from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova.consoleauth import rpcapi as consoleauth_rpcapi
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
authorize = extensions.extension_authorizer('compute', 'console_auth_tokens')
diff --git a/nova/api/openstack/compute/contrib/console_output.py b/nova/api/openstack/compute/contrib/console_output.py
index fab5c25afd..63aa1c8f04 100644
--- a/nova/api/openstack/compute/contrib/console_output.py
+++ b/nova/api/openstack/compute/contrib/console_output.py
@@ -22,7 +22,7 @@ from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova import compute
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
authorize = extensions.extension_authorizer('compute', 'console_output')
diff --git a/nova/api/openstack/compute/contrib/consoles.py b/nova/api/openstack/compute/contrib/consoles.py
index 2ea7ca24d2..cf97764f6e 100644
--- a/nova/api/openstack/compute/contrib/consoles.py
+++ b/nova/api/openstack/compute/contrib/consoles.py
@@ -18,7 +18,7 @@ from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova import compute
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
authorize = extensions.extension_authorizer('compute', 'consoles')
diff --git a/nova/api/openstack/compute/contrib/disk_config.py b/nova/api/openstack/compute/contrib/disk_config.py
index 19817eab24..7118be549f 100644
--- a/nova/api/openstack/compute/contrib/disk_config.py
+++ b/nova/api/openstack/compute/contrib/disk_config.py
@@ -19,7 +19,7 @@ from webob import exc
from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import strutils
ALIAS = 'OS-DCF'
diff --git a/nova/api/openstack/compute/contrib/evacuate.py b/nova/api/openstack/compute/contrib/evacuate.py
index 723167a993..cd6f8f4ccb 100644
--- a/nova/api/openstack/compute/contrib/evacuate.py
+++ b/nova/api/openstack/compute/contrib/evacuate.py
@@ -20,7 +20,7 @@ from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova import compute
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import strutils
from nova import utils
diff --git a/nova/api/openstack/compute/contrib/fixed_ips.py b/nova/api/openstack/compute/contrib/fixed_ips.py
index 805f1cbed5..199a4a105d 100644
--- a/nova/api/openstack/compute/contrib/fixed_ips.py
+++ b/nova/api/openstack/compute/contrib/fixed_ips.py
@@ -16,8 +16,8 @@ import webob.exc
from nova.api.openstack import extensions
from nova import exception
+from nova.i18n import _
from nova import objects
-from nova.openstack.common.gettextutils import _
authorize = extensions.extension_authorizer('compute', 'fixed_ips')
diff --git a/nova/api/openstack/compute/contrib/flavor_access.py b/nova/api/openstack/compute/contrib/flavor_access.py
index a497f75824..198dfbb8e2 100644
--- a/nova/api/openstack/compute/contrib/flavor_access.py
+++ b/nova/api/openstack/compute/contrib/flavor_access.py
@@ -21,8 +21,8 @@ from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
from nova import exception
+from nova.i18n import _
from nova import objects
-from nova.openstack.common.gettextutils import _
soft_authorize = extensions.soft_extension_authorizer('compute',
diff --git a/nova/api/openstack/compute/contrib/flavorextraspecs.py b/nova/api/openstack/compute/contrib/flavorextraspecs.py
index 8ba0db9d7f..2f6f06f75c 100644
--- a/nova/api/openstack/compute/contrib/flavorextraspecs.py
+++ b/nova/api/openstack/compute/contrib/flavorextraspecs.py
@@ -22,8 +22,8 @@ from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
from nova.compute import flavors
from nova import exception
+from nova.i18n import _
from nova import objects
-from nova.openstack.common.gettextutils import _
from nova import utils
authorize = extensions.extension_authorizer('compute', 'flavorextraspecs')
diff --git a/nova/api/openstack/compute/contrib/flavormanage.py b/nova/api/openstack/compute/contrib/flavormanage.py
index fe6b170eee..af5df772e0 100644
--- a/nova/api/openstack/compute/contrib/flavormanage.py
+++ b/nova/api/openstack/compute/contrib/flavormanage.py
@@ -18,7 +18,7 @@ from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova.compute import flavors
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
authorize = extensions.extension_authorizer('compute', 'flavormanage')
diff --git a/nova/api/openstack/compute/contrib/floating_ip_dns.py b/nova/api/openstack/compute/contrib/floating_ip_dns.py
index 3e5fb9b5e2..771c25dfb7 100644
--- a/nova/api/openstack/compute/contrib/floating_ip_dns.py
+++ b/nova/api/openstack/compute/contrib/floating_ip_dns.py
@@ -20,8 +20,8 @@ from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
from nova import exception
+from nova.i18n import _
from nova import network
-from nova.openstack.common.gettextutils import _
from nova import utils
diff --git a/nova/api/openstack/compute/contrib/floating_ips.py b/nova/api/openstack/compute/contrib/floating_ips.py
index bc1f18eb56..8bded0cc61 100644
--- a/nova/api/openstack/compute/contrib/floating_ips.py
+++ b/nova/api/openstack/compute/contrib/floating_ips.py
@@ -24,8 +24,8 @@ from nova.api.openstack import xmlutil
from nova import compute
from nova.compute import utils as compute_utils
from nova import exception
+from nova.i18n import _
from nova import network
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import uuidutils
diff --git a/nova/api/openstack/compute/contrib/floating_ips_bulk.py b/nova/api/openstack/compute/contrib/floating_ips_bulk.py
index 4044ce2bbe..4a6facba13 100644
--- a/nova/api/openstack/compute/contrib/floating_ips_bulk.py
+++ b/nova/api/openstack/compute/contrib/floating_ips_bulk.py
@@ -18,8 +18,8 @@ import webob.exc
from nova.api.openstack import extensions
from nova import exception
+from nova.i18n import _
from nova import objects
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
CONF = cfg.CONF
diff --git a/nova/api/openstack/compute/contrib/fping.py b/nova/api/openstack/compute/contrib/fping.py
index 2b8a753426..28128188f1 100644
--- a/nova/api/openstack/compute/contrib/fping.py
+++ b/nova/api/openstack/compute/contrib/fping.py
@@ -24,7 +24,7 @@ from nova.api.openstack import common
from nova.api.openstack import extensions
from nova import compute
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova import utils
authorize = extensions.extension_authorizer('compute', 'fping')
diff --git a/nova/api/openstack/compute/contrib/hosts.py b/nova/api/openstack/compute/contrib/hosts.py
index 94720773b8..cb2303799a 100644
--- a/nova/api/openstack/compute/contrib/hosts.py
+++ b/nova/api/openstack/compute/contrib/hosts.py
@@ -22,7 +22,7 @@ from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
from nova import compute
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
LOG = logging.getLogger(__name__)
diff --git a/nova/api/openstack/compute/contrib/hypervisors.py b/nova/api/openstack/compute/contrib/hypervisors.py
index 33d3ad0d06..22b51fce74 100644
--- a/nova/api/openstack/compute/contrib/hypervisors.py
+++ b/nova/api/openstack/compute/contrib/hypervisors.py
@@ -22,7 +22,7 @@ from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
from nova import compute
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
authorize = extensions.extension_authorizer('compute', 'hypervisors')
diff --git a/nova/api/openstack/compute/contrib/instance_usage_audit_log.py b/nova/api/openstack/compute/contrib/instance_usage_audit_log.py
index d39318a0cd..90805469dc 100644
--- a/nova/api/openstack/compute/contrib/instance_usage_audit_log.py
+++ b/nova/api/openstack/compute/contrib/instance_usage_audit_log.py
@@ -21,7 +21,7 @@ import webob.exc
from nova.api.openstack import extensions
from nova import compute
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova import utils
CONF = cfg.CONF
diff --git a/nova/api/openstack/compute/contrib/keypairs.py b/nova/api/openstack/compute/contrib/keypairs.py
index 1c58675725..cd023e8eae 100644
--- a/nova/api/openstack/compute/contrib/keypairs.py
+++ b/nova/api/openstack/compute/contrib/keypairs.py
@@ -24,7 +24,7 @@ from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
from nova.compute import api as compute_api
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
authorize = extensions.extension_authorizer('compute', 'keypairs')
diff --git a/nova/api/openstack/compute/contrib/multinic.py b/nova/api/openstack/compute/contrib/multinic.py
index 6887c2ef8e..5bba1d86b7 100644
--- a/nova/api/openstack/compute/contrib/multinic.py
+++ b/nova/api/openstack/compute/contrib/multinic.py
@@ -22,7 +22,7 @@ from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova import compute
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
diff --git a/nova/api/openstack/compute/contrib/networks_associate.py b/nova/api/openstack/compute/contrib/networks_associate.py
index f8005f1f24..50edcffe9b 100644
--- a/nova/api/openstack/compute/contrib/networks_associate.py
+++ b/nova/api/openstack/compute/contrib/networks_associate.py
@@ -15,8 +15,8 @@ from webob import exc
from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova import exception
+from nova.i18n import _
from nova import network
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
LOG = logging.getLogger(__name__)
diff --git a/nova/api/openstack/compute/contrib/os_networks.py b/nova/api/openstack/compute/contrib/os_networks.py
index fbc6b3aa83..12e396c2a3 100644
--- a/nova/api/openstack/compute/contrib/os_networks.py
+++ b/nova/api/openstack/compute/contrib/os_networks.py
@@ -21,8 +21,8 @@ from webob import exc
from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova import exception
+from nova.i18n import _
from nova import network
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
LOG = logging.getLogger(__name__)
diff --git a/nova/api/openstack/compute/contrib/os_tenant_networks.py b/nova/api/openstack/compute/contrib/os_tenant_networks.py
index 90ad2ba529..b7ecf4957f 100644
--- a/nova/api/openstack/compute/contrib/os_tenant_networks.py
+++ b/nova/api/openstack/compute/contrib/os_tenant_networks.py
@@ -22,8 +22,8 @@ from webob import exc
from nova.api.openstack import extensions
from nova import context as nova_context
from nova import exception
+from nova.i18n import _
import nova.network
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova import quota
diff --git a/nova/api/openstack/compute/contrib/quota_classes.py b/nova/api/openstack/compute/contrib/quota_classes.py
index 755bdefc9c..bb034a0b4d 100644
--- a/nova/api/openstack/compute/contrib/quota_classes.py
+++ b/nova/api/openstack/compute/contrib/quota_classes.py
@@ -21,7 +21,7 @@ from nova.api.openstack import xmlutil
import nova.context
from nova import db
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova import quota
from nova import utils
diff --git a/nova/api/openstack/compute/contrib/quotas.py b/nova/api/openstack/compute/contrib/quotas.py
index 46bd353924..c8ba23b0e3 100644
--- a/nova/api/openstack/compute/contrib/quotas.py
+++ b/nova/api/openstack/compute/contrib/quotas.py
@@ -22,7 +22,7 @@ from nova.api.openstack import xmlutil
import nova.context
from nova import db
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.openstack.common import strutils
from nova import quota
diff --git a/nova/api/openstack/compute/contrib/rescue.py b/nova/api/openstack/compute/contrib/rescue.py
index b5f9755b21..15338a2ffc 100644
--- a/nova/api/openstack/compute/contrib/rescue.py
+++ b/nova/api/openstack/compute/contrib/rescue.py
@@ -23,7 +23,7 @@ from nova.api.openstack import extensions as exts
from nova.api.openstack import wsgi
from nova import compute
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova import utils
diff --git a/nova/api/openstack/compute/contrib/scheduler_hints.py b/nova/api/openstack/compute/contrib/scheduler_hints.py
index 2b2c129961..c1d69413a4 100644
--- a/nova/api/openstack/compute/contrib/scheduler_hints.py
+++ b/nova/api/openstack/compute/contrib/scheduler_hints.py
@@ -16,7 +16,7 @@ import webob.exc
from nova.api.openstack import extensions
from nova.api.openstack import wsgi
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
class SchedulerHintsController(wsgi.Controller):
diff --git a/nova/api/openstack/compute/contrib/security_group_default_rules.py b/nova/api/openstack/compute/contrib/security_group_default_rules.py
index 6216cc3365..fa73368527 100644
--- a/nova/api/openstack/compute/contrib/security_group_default_rules.py
+++ b/nova/api/openstack/compute/contrib/security_group_default_rules.py
@@ -20,8 +20,8 @@ from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
from nova import exception
+from nova.i18n import _
from nova.network.security_group import openstack_driver
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import xmlutils
diff --git a/nova/api/openstack/compute/contrib/security_groups.py b/nova/api/openstack/compute/contrib/security_groups.py
index a9e4fe2c86..93d0604764 100644
--- a/nova/api/openstack/compute/contrib/security_groups.py
+++ b/nova/api/openstack/compute/contrib/security_groups.py
@@ -29,9 +29,9 @@ from nova.api.openstack import xmlutil
from nova import compute
from nova.compute import api as compute_api
from nova import exception
+from nova.i18n import _
from nova.network.security_group import neutron_driver
from nova.network.security_group import openstack_driver
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import xmlutils
from nova.virt import netutils
diff --git a/nova/api/openstack/compute/contrib/server_external_events.py b/nova/api/openstack/compute/contrib/server_external_events.py
index 97dd23b532..34d12f7036 100644
--- a/nova/api/openstack/compute/contrib/server_external_events.py
+++ b/nova/api/openstack/compute/contrib/server_external_events.py
@@ -19,9 +19,9 @@ from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
from nova import compute
from nova import exception
+from nova.i18n import _
from nova import objects
from nova.objects import external_event as external_event_obj
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
diff --git a/nova/api/openstack/compute/contrib/server_groups.py b/nova/api/openstack/compute/contrib/server_groups.py
index 0d10596ecd..3a970f83a3 100644
--- a/nova/api/openstack/compute/contrib/server_groups.py
+++ b/nova/api/openstack/compute/contrib/server_groups.py
@@ -23,8 +23,8 @@ from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
import nova.exception
+from nova.i18n import _
from nova import objects
-from nova.openstack.common.gettextutils import _
from nova import utils
# NOTE(russellb) There is one other policy, 'legacy', but we don't allow that
diff --git a/nova/api/openstack/compute/contrib/server_start_stop.py b/nova/api/openstack/compute/contrib/server_start_stop.py
index d08f239e7f..96c9f11c58 100644
--- a/nova/api/openstack/compute/contrib/server_start_stop.py
+++ b/nova/api/openstack/compute/contrib/server_start_stop.py
@@ -18,8 +18,8 @@ from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova import compute
from nova import exception
+from nova.i18n import _
from nova import objects
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
diff --git a/nova/api/openstack/compute/contrib/services.py b/nova/api/openstack/compute/contrib/services.py
index 0c1509ab47..6ec91e6b01 100644
--- a/nova/api/openstack/compute/contrib/services.py
+++ b/nova/api/openstack/compute/contrib/services.py
@@ -20,7 +20,7 @@ from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
from nova import compute
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova import servicegroup
from nova import utils
diff --git a/nova/api/openstack/compute/contrib/shelve.py b/nova/api/openstack/compute/contrib/shelve.py
index 76d73e111d..d5532ca9bd 100644
--- a/nova/api/openstack/compute/contrib/shelve.py
+++ b/nova/api/openstack/compute/contrib/shelve.py
@@ -22,7 +22,7 @@ from nova.api.openstack import extensions as exts
from nova.api.openstack import wsgi
from nova import compute
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
auth_shelve = exts.extension_authorizer('compute', 'shelve')
diff --git a/nova/api/openstack/compute/contrib/simple_tenant_usage.py b/nova/api/openstack/compute/contrib/simple_tenant_usage.py
index 6b9c25cf9b..361df17493 100644
--- a/nova/api/openstack/compute/contrib/simple_tenant_usage.py
+++ b/nova/api/openstack/compute/contrib/simple_tenant_usage.py
@@ -23,9 +23,9 @@ from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
from nova import exception
+from nova.i18n import _
from nova import objects
from nova.objects import instance as instance_obj
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import timeutils
authorize_show = extensions.extension_authorizer('compute',
diff --git a/nova/api/openstack/compute/contrib/volumes.py b/nova/api/openstack/compute/contrib/volumes.py
index 8a613c8bcc..b2fa26f5e0 100644
--- a/nova/api/openstack/compute/contrib/volumes.py
+++ b/nova/api/openstack/compute/contrib/volumes.py
@@ -24,8 +24,8 @@ from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
from nova import compute
from nova import exception
+from nova.i18n import _
from nova import objects
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import strutils
from nova.openstack.common import uuidutils
diff --git a/nova/api/openstack/compute/extensions.py b/nova/api/openstack/compute/extensions.py
index af3e4af757..24ea65234f 100644
--- a/nova/api/openstack/compute/extensions.py
+++ b/nova/api/openstack/compute/extensions.py
@@ -16,7 +16,7 @@
from oslo.config import cfg
from nova.api.openstack import extensions as base_extensions
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
ext_opts = [
diff --git a/nova/api/openstack/compute/flavors.py b/nova/api/openstack/compute/flavors.py
index 2aa8a32d24..3871131beb 100644
--- a/nova/api/openstack/compute/flavors.py
+++ b/nova/api/openstack/compute/flavors.py
@@ -20,7 +20,7 @@ from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
from nova.compute import flavors
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import strutils
from nova import utils
diff --git a/nova/api/openstack/compute/image_metadata.py b/nova/api/openstack/compute/image_metadata.py
index 4f871762d0..a77e37266e 100644
--- a/nova/api/openstack/compute/image_metadata.py
+++ b/nova/api/openstack/compute/image_metadata.py
@@ -18,8 +18,8 @@ from webob import exc
from nova.api.openstack import common
from nova.api.openstack import wsgi
from nova import exception
+from nova.i18n import _
from nova.image import glance
-from nova.openstack.common.gettextutils import _
class Controller(object):
diff --git a/nova/api/openstack/compute/images.py b/nova/api/openstack/compute/images.py
index 13a3c0deba..216e0858f7 100644
--- a/nova/api/openstack/compute/images.py
+++ b/nova/api/openstack/compute/images.py
@@ -20,8 +20,8 @@ from nova.api.openstack.compute.views import images as views_images
from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
from nova import exception
+from nova.i18n import _
import nova.image.glance
-from nova.openstack.common.gettextutils import _
import nova.utils
diff --git a/nova/api/openstack/compute/ips.py b/nova/api/openstack/compute/ips.py
index 3117b6b498..a537f21dcb 100644
--- a/nova/api/openstack/compute/ips.py
+++ b/nova/api/openstack/compute/ips.py
@@ -20,7 +20,7 @@ from nova.api.openstack import common
from nova.api.openstack.compute.views import addresses as view_addresses
from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
def make_network(elem):
diff --git a/nova/api/openstack/compute/limits.py b/nova/api/openstack/compute/limits.py
index 90194088ac..655934723b 100644
--- a/nova/api/openstack/compute/limits.py
+++ b/nova/api/openstack/compute/limits.py
@@ -44,7 +44,7 @@ import webob.exc
from nova.api.openstack.compute.views import limits as limits_views
from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import importutils
from nova.openstack.common import jsonutils
from nova import quota
diff --git a/nova/api/openstack/compute/plugins/__init__.py b/nova/api/openstack/compute/plugins/__init__.py
index c9f8605e2b..73857e2541 100644
--- a/nova/api/openstack/compute/plugins/__init__.py
+++ b/nova/api/openstack/compute/plugins/__init__.py
@@ -14,7 +14,7 @@
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
LOG = logging.getLogger(__name__)
diff --git a/nova/api/openstack/compute/plugins/v3/access_ips.py b/nova/api/openstack/compute/plugins/v3/access_ips.py
index 3804c031c2..d7378d3a2a 100644
--- a/nova/api/openstack/compute/plugins/v3/access_ips.py
+++ b/nova/api/openstack/compute/plugins/v3/access_ips.py
@@ -16,7 +16,7 @@ from webob import exc
from nova.api.openstack import extensions
from nova.api.openstack import wsgi
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova import utils
diff --git a/nova/api/openstack/compute/plugins/v3/admin_actions.py b/nova/api/openstack/compute/plugins/v3/admin_actions.py
index 326d9e7642..0ebb82f32e 100644
--- a/nova/api/openstack/compute/plugins/v3/admin_actions.py
+++ b/nova/api/openstack/compute/plugins/v3/admin_actions.py
@@ -21,7 +21,7 @@ from nova.api.openstack import wsgi
from nova import compute
from nova.compute import vm_states
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
LOG = logging.getLogger(__name__)
diff --git a/nova/api/openstack/compute/plugins/v3/admin_password.py b/nova/api/openstack/compute/plugins/v3/admin_password.py
index 9265811bb2..7bf0f86529 100644
--- a/nova/api/openstack/compute/plugins/v3/admin_password.py
+++ b/nova/api/openstack/compute/plugins/v3/admin_password.py
@@ -21,7 +21,7 @@ from nova.api.openstack import wsgi
from nova.api import validation
from nova import compute
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
ALIAS = "os-admin-password"
diff --git a/nova/api/openstack/compute/plugins/v3/aggregates.py b/nova/api/openstack/compute/plugins/v3/aggregates.py
index dde3abc92b..61474c4d01 100644
--- a/nova/api/openstack/compute/plugins/v3/aggregates.py
+++ b/nova/api/openstack/compute/plugins/v3/aggregates.py
@@ -25,7 +25,7 @@ from nova.api.openstack import wsgi
from nova.api import validation
from nova.compute import api as compute_api
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova import utils
diff --git a/nova/api/openstack/compute/plugins/v3/attach_interfaces.py b/nova/api/openstack/compute/plugins/v3/attach_interfaces.py
index 477f432be9..ed805dc574 100644
--- a/nova/api/openstack/compute/plugins/v3/attach_interfaces.py
+++ b/nova/api/openstack/compute/plugins/v3/attach_interfaces.py
@@ -24,8 +24,8 @@ from nova.api.openstack import extensions
from nova.api import validation
from nova import compute
from nova import exception
+from nova.i18n import _
from nova import network
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
diff --git a/nova/api/openstack/compute/plugins/v3/cells.py b/nova/api/openstack/compute/plugins/v3/cells.py
index 31c3ffb133..2c7c9eae6f 100644
--- a/nova/api/openstack/compute/plugins/v3/cells.py
+++ b/nova/api/openstack/compute/plugins/v3/cells.py
@@ -27,7 +27,7 @@ from nova.api.openstack import wsgi
from nova.cells import rpcapi as cells_rpcapi
from nova.compute import api as compute
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.openstack.common import strutils
from nova.openstack.common import timeutils
diff --git a/nova/api/openstack/compute/plugins/v3/certificates.py b/nova/api/openstack/compute/plugins/v3/certificates.py
index 780cb4914e..6ab3d43231 100644
--- a/nova/api/openstack/compute/plugins/v3/certificates.py
+++ b/nova/api/openstack/compute/plugins/v3/certificates.py
@@ -18,8 +18,8 @@ from nova.api.openstack import extensions
from nova.api.openstack import wsgi
import nova.cert.rpcapi
from nova import exception
+from nova.i18n import _
from nova import network
-from nova.openstack.common.gettextutils import _
ALIAS = "os-certificates"
authorize = extensions.extension_authorizer('compute', 'v3:' + ALIAS)
diff --git a/nova/api/openstack/compute/plugins/v3/console_auth_tokens.py b/nova/api/openstack/compute/plugins/v3/console_auth_tokens.py
index c1e0482218..3d6f47740d 100644
--- a/nova/api/openstack/compute/plugins/v3/console_auth_tokens.py
+++ b/nova/api/openstack/compute/plugins/v3/console_auth_tokens.py
@@ -18,7 +18,7 @@ import webob
from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova.consoleauth import rpcapi as consoleauth_rpcapi
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
ALIAS = "os-console-auth-tokens"
authorize = extensions.extension_authorizer('compute', 'v3:' + ALIAS)
diff --git a/nova/api/openstack/compute/plugins/v3/console_output.py b/nova/api/openstack/compute/plugins/v3/console_output.py
index 37cef3fd46..7921298bf8 100644
--- a/nova/api/openstack/compute/plugins/v3/console_output.py
+++ b/nova/api/openstack/compute/plugins/v3/console_output.py
@@ -23,7 +23,7 @@ from nova.api.openstack import wsgi
from nova.api import validation
from nova import compute
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
ALIAS = "os-console-output"
authorize = extensions.extension_authorizer('compute', "v3:" + ALIAS)
diff --git a/nova/api/openstack/compute/plugins/v3/evacuate.py b/nova/api/openstack/compute/plugins/v3/evacuate.py
index dc0f39e6ad..de04f24a2c 100644
--- a/nova/api/openstack/compute/plugins/v3/evacuate.py
+++ b/nova/api/openstack/compute/plugins/v3/evacuate.py
@@ -23,7 +23,7 @@ from nova.api.openstack import wsgi
from nova.api import validation
from nova import compute
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.openstack.common import strutils
from nova import utils
diff --git a/nova/api/openstack/compute/plugins/v3/extended_volumes.py b/nova/api/openstack/compute/plugins/v3/extended_volumes.py
index 6d5eb48630..1a4714f3fd 100644
--- a/nova/api/openstack/compute/plugins/v3/extended_volumes.py
+++ b/nova/api/openstack/compute/plugins/v3/extended_volumes.py
@@ -23,8 +23,8 @@ from nova.api.openstack import wsgi
from nova.api import validation
from nova import compute
from nova import exception
+from nova.i18n import _
from nova import objects
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova import volume
diff --git a/nova/api/openstack/compute/plugins/v3/flavor_access.py b/nova/api/openstack/compute/plugins/v3/flavor_access.py
index 762f24f52e..7c6e1ccb1e 100644
--- a/nova/api/openstack/compute/plugins/v3/flavor_access.py
+++ b/nova/api/openstack/compute/plugins/v3/flavor_access.py
@@ -22,8 +22,8 @@ from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova.api import validation
from nova import exception
+from nova.i18n import _
from nova import objects
-from nova.openstack.common.gettextutils import _
ALIAS = 'flavor-access'
soft_authorize = extensions.soft_extension_authorizer('compute',
diff --git a/nova/api/openstack/compute/plugins/v3/flavors.py b/nova/api/openstack/compute/plugins/v3/flavors.py
index d29156b03b..7e84219b3e 100644
--- a/nova/api/openstack/compute/plugins/v3/flavors.py
+++ b/nova/api/openstack/compute/plugins/v3/flavors.py
@@ -20,7 +20,7 @@ from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova.compute import flavors
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import strutils
from nova import utils
diff --git a/nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py b/nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py
index 6c4fd157e6..90b3070a6e 100644
--- a/nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py
+++ b/nova/api/openstack/compute/plugins/v3/flavors_extraspecs.py
@@ -19,8 +19,8 @@ from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova.compute import flavors
from nova import exception
+from nova.i18n import _
from nova import objects
-from nova.openstack.common.gettextutils import _
class FlavorExtraSpecsController(object):
diff --git a/nova/api/openstack/compute/plugins/v3/hosts.py b/nova/api/openstack/compute/plugins/v3/hosts.py
index 5087b0171e..324f50f119 100644
--- a/nova/api/openstack/compute/plugins/v3/hosts.py
+++ b/nova/api/openstack/compute/plugins/v3/hosts.py
@@ -21,7 +21,7 @@ from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova import compute
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
LOG = logging.getLogger(__name__)
diff --git a/nova/api/openstack/compute/plugins/v3/hypervisors.py b/nova/api/openstack/compute/plugins/v3/hypervisors.py
index 644d73a6be..80d0250bc2 100644
--- a/nova/api/openstack/compute/plugins/v3/hypervisors.py
+++ b/nova/api/openstack/compute/plugins/v3/hypervisors.py
@@ -20,7 +20,7 @@ import webob.exc
from nova.api.openstack import extensions
from nova import compute
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
ALIAS = "os-hypervisors"
diff --git a/nova/api/openstack/compute/plugins/v3/ips.py b/nova/api/openstack/compute/plugins/v3/ips.py
index ded2524fbc..fe5915b30c 100644
--- a/nova/api/openstack/compute/plugins/v3/ips.py
+++ b/nova/api/openstack/compute/plugins/v3/ips.py
@@ -20,7 +20,7 @@ from nova.api.openstack import common
from nova.api.openstack.compute.views import addresses as views_addresses
from nova.api.openstack import extensions
from nova.api.openstack import wsgi
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
class IPsController(wsgi.Controller):
diff --git a/nova/api/openstack/compute/plugins/v3/keypairs.py b/nova/api/openstack/compute/plugins/v3/keypairs.py
index 503a1a5126..1abbeacfe7 100644
--- a/nova/api/openstack/compute/plugins/v3/keypairs.py
+++ b/nova/api/openstack/compute/plugins/v3/keypairs.py
@@ -24,7 +24,7 @@ from nova.api.openstack import wsgi
from nova.api import validation
from nova.compute import api as compute_api
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
ALIAS = 'keypairs'
diff --git a/nova/api/openstack/compute/plugins/v3/multiple_create.py b/nova/api/openstack/compute/plugins/v3/multiple_create.py
index 684ec07e0c..5f60f702fe 100644
--- a/nova/api/openstack/compute/plugins/v3/multiple_create.py
+++ b/nova/api/openstack/compute/plugins/v3/multiple_create.py
@@ -17,7 +17,7 @@ from webob import exc
from nova.api.openstack import extensions
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import strutils
from nova import utils
diff --git a/nova/api/openstack/compute/plugins/v3/pause_server.py b/nova/api/openstack/compute/plugins/v3/pause_server.py
index 25b758b986..dbbead7c07 100644
--- a/nova/api/openstack/compute/plugins/v3/pause_server.py
+++ b/nova/api/openstack/compute/plugins/v3/pause_server.py
@@ -21,7 +21,7 @@ from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova import compute
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
LOG = logging.getLogger(__name__)
diff --git a/nova/api/openstack/compute/plugins/v3/quota_sets.py b/nova/api/openstack/compute/plugins/v3/quota_sets.py
index 8dd99b6905..8b9bf46d28 100644
--- a/nova/api/openstack/compute/plugins/v3/quota_sets.py
+++ b/nova/api/openstack/compute/plugins/v3/quota_sets.py
@@ -23,7 +23,7 @@ from nova.api import validation
import nova.context
from nova import db
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.openstack.common import strutils
from nova import quota
diff --git a/nova/api/openstack/compute/plugins/v3/remote_consoles.py b/nova/api/openstack/compute/plugins/v3/remote_consoles.py
index 7d8310f38c..0f1277c957 100644
--- a/nova/api/openstack/compute/plugins/v3/remote_consoles.py
+++ b/nova/api/openstack/compute/plugins/v3/remote_consoles.py
@@ -21,7 +21,7 @@ from nova.api.openstack import wsgi
from nova.api import validation
from nova import compute
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
ALIAS = "os-remote-consoles"
diff --git a/nova/api/openstack/compute/plugins/v3/rescue.py b/nova/api/openstack/compute/plugins/v3/rescue.py
index ea8fa75bdc..138c21116c 100644
--- a/nova/api/openstack/compute/plugins/v3/rescue.py
+++ b/nova/api/openstack/compute/plugins/v3/rescue.py
@@ -25,7 +25,7 @@ from nova.api.openstack import wsgi
from nova.api import validation
from nova import compute
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova import utils
diff --git a/nova/api/openstack/compute/plugins/v3/scheduler_hints.py b/nova/api/openstack/compute/plugins/v3/scheduler_hints.py
index c2fed29ab9..35972fdf40 100644
--- a/nova/api/openstack/compute/plugins/v3/scheduler_hints.py
+++ b/nova/api/openstack/compute/plugins/v3/scheduler_hints.py
@@ -15,7 +15,7 @@
import webob.exc
from nova.api.openstack import extensions
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
ALIAS = "os-scheduler-hints"
diff --git a/nova/api/openstack/compute/plugins/v3/server_actions.py b/nova/api/openstack/compute/plugins/v3/server_actions.py
index edfed81f6c..876972f066 100644
--- a/nova/api/openstack/compute/plugins/v3/server_actions.py
+++ b/nova/api/openstack/compute/plugins/v3/server_actions.py
@@ -19,7 +19,7 @@ from nova.api.openstack import common
from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova import compute
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
ALIAS = "os-server-actions"
authorize_actions = extensions.extension_authorizer('compute',
diff --git a/nova/api/openstack/compute/plugins/v3/server_external_events.py b/nova/api/openstack/compute/plugins/v3/server_external_events.py
index b3f848d145..bc59733c04 100644
--- a/nova/api/openstack/compute/plugins/v3/server_external_events.py
+++ b/nova/api/openstack/compute/plugins/v3/server_external_events.py
@@ -18,9 +18,9 @@ from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova import compute
from nova import exception
+from nova.i18n import _
from nova import objects
from nova.objects import external_event as external_event_obj
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
diff --git a/nova/api/openstack/compute/plugins/v3/server_metadata.py b/nova/api/openstack/compute/plugins/v3/server_metadata.py
index 7997858336..035a57472b 100644
--- a/nova/api/openstack/compute/plugins/v3/server_metadata.py
+++ b/nova/api/openstack/compute/plugins/v3/server_metadata.py
@@ -20,7 +20,7 @@ from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova import compute
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
class ServerMetadataController(wsgi.Controller):
diff --git a/nova/api/openstack/compute/plugins/v3/servers.py b/nova/api/openstack/compute/plugins/v3/servers.py
index 60ab3b8ad8..505d651b8b 100644
--- a/nova/api/openstack/compute/plugins/v3/servers.py
+++ b/nova/api/openstack/compute/plugins/v3/servers.py
@@ -31,9 +31,9 @@ from nova.api.openstack import wsgi
from nova import compute
from nova.compute import flavors
from nova import exception
+from nova.i18n import _
from nova.image import glance
from nova import objects
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import strutils
from nova.openstack.common import timeutils
diff --git a/nova/api/openstack/compute/plugins/v3/services.py b/nova/api/openstack/compute/plugins/v3/services.py
index 6ef0507ff6..f07966de1d 100644
--- a/nova/api/openstack/compute/plugins/v3/services.py
+++ b/nova/api/openstack/compute/plugins/v3/services.py
@@ -19,7 +19,7 @@ from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova import compute
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova import servicegroup
from nova import utils
diff --git a/nova/api/openstack/compute/server_metadata.py b/nova/api/openstack/compute/server_metadata.py
index 7e11d1184c..a0340bcb60 100644
--- a/nova/api/openstack/compute/server_metadata.py
+++ b/nova/api/openstack/compute/server_metadata.py
@@ -19,7 +19,7 @@ from nova.api.openstack import common
from nova.api.openstack import wsgi
from nova import compute
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
class Controller(object):
diff --git a/nova/api/openstack/compute/servers.py b/nova/api/openstack/compute/servers.py
index ab4f262ba3..5bc97e355c 100644
--- a/nova/api/openstack/compute/servers.py
+++ b/nova/api/openstack/compute/servers.py
@@ -33,9 +33,9 @@ from nova import block_device
from nova import compute
from nova.compute import flavors
from nova import exception
+from nova.i18n import _
from nova import objects
from nova.objects import instance as instance_obj
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import strutils
from nova.openstack.common import timeutils
diff --git a/nova/api/openstack/compute/views/servers.py b/nova/api/openstack/compute/views/servers.py
index f09d4272e2..f168aac4e5 100644
--- a/nova/api/openstack/compute/views/servers.py
+++ b/nova/api/openstack/compute/views/servers.py
@@ -21,8 +21,8 @@ from nova.api.openstack.compute.views import addresses as views_addresses
from nova.api.openstack.compute.views import flavors as views_flavors
from nova.api.openstack.compute.views import images as views_images
from nova.compute import flavors
+from nova.i18n import _
from nova.objects import base as obj_base
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
from nova import utils
diff --git a/nova/api/openstack/extensions.py b/nova/api/openstack/extensions.py
index 5ea32160b6..65099be0a0 100644
--- a/nova/api/openstack/extensions.py
+++ b/nova/api/openstack/extensions.py
@@ -26,7 +26,7 @@ import nova.api.openstack
from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import importutils
from nova.openstack.common import log as logging
import nova.policy
diff --git a/nova/api/openstack/wsgi.py b/nova/api/openstack/wsgi.py
index d8458af2f5..531213e158 100644
--- a/nova/api/openstack/wsgi.py
+++ b/nova/api/openstack/wsgi.py
@@ -25,8 +25,8 @@ import webob
from nova.api.openstack import xmlutil
from nova import exception
-from nova.openstack.common import gettextutils
-from nova.openstack.common.gettextutils import _
+from nova import i18n
+from nova.i18n import _
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova import utils
@@ -193,7 +193,7 @@ class Request(webob.Request):
if not self.accept_language:
return None
return self.accept_language.best_match(
- gettextutils.get_available_languages('nova'))
+ i18n.get_available_languages())
class ActionDispatcher(object):
@@ -1197,8 +1197,7 @@ class Fault(webob.exc.HTTPException):
LOG.debug("Returning %(code)s to user: %(explanation)s",
{'code': code, 'explanation': explanation})
- explanation = gettextutils.translate(explanation,
- user_locale)
+ explanation = i18n.translate(explanation, user_locale)
fault_data = {
fault_name: {
'code': code,
@@ -1261,13 +1260,9 @@ class RateLimitFault(webob.exc.HTTPException):
metadata = {"attributes": {"overLimit": ["code", "retryAfter"]}}
self.content['overLimit']['message'] = \
- gettextutils.translate(
- self.content['overLimit']['message'],
- user_locale)
+ i18n.translate(self.content['overLimit']['message'], user_locale)
self.content['overLimit']['details'] = \
- gettextutils.translate(
- self.content['overLimit']['details'],
- user_locale)
+ i18n.translate(self.content['overLimit']['details'], user_locale)
xml_serializer = XMLDictSerializer(metadata, XMLNS_V11)
serializer = {
diff --git a/nova/api/openstack/xmlutil.py b/nova/api/openstack/xmlutil.py
index 68e50f82ea..b401d83525 100644
--- a/nova/api/openstack/xmlutil.py
+++ b/nova/api/openstack/xmlutil.py
@@ -23,7 +23,7 @@ from lxml import etree
import six
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova import utils
diff --git a/nova/api/sizelimit.py b/nova/api/sizelimit.py
index 0248cbacb0..1fab96b3df 100644
--- a/nova/api/sizelimit.py
+++ b/nova/api/sizelimit.py
@@ -20,7 +20,7 @@ from oslo.config import cfg
import webob.dec
import webob.exc
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova import wsgi
diff --git a/nova/api/validation/validators.py b/nova/api/validation/validators.py
index 3e5e82accb..8cec2de094 100644
--- a/nova/api/validation/validators.py
+++ b/nova/api/validation/validators.py
@@ -19,7 +19,7 @@ Internal implementation of request Body validating middleware.
import jsonschema
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import uuidutils
diff --git a/nova/block_device.py b/nova/block_device.py
index 34453ec6de..b0e048d6c5 100644
--- a/nova/block_device.py
+++ b/nova/block_device.py
@@ -18,7 +18,7 @@ import re
from oslo.config import cfg
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.openstack.common import strutils
from nova import utils
diff --git a/nova/cells/filters/target_cell.py b/nova/cells/filters/target_cell.py
index de2ef6d18e..43c81e71e5 100644
--- a/nova/cells/filters/target_cell.py
+++ b/nova/cells/filters/target_cell.py
@@ -22,7 +22,7 @@ done as there's no way to know whether the full path is a valid.
"""
from nova.cells import filters
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
LOG = logging.getLogger(__name__)
diff --git a/nova/cells/manager.py b/nova/cells/manager.py
index f40bc58ea3..5bad71fa8d 100644
--- a/nova/cells/manager.py
+++ b/nova/cells/manager.py
@@ -27,10 +27,10 @@ from nova.cells import state as cells_state
from nova.cells import utils as cells_utils
from nova import context
from nova import exception
+from nova.i18n import _
from nova import manager
from nova import objects
from nova.objects import base as base_obj
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import importutils
from nova.openstack.common import log as logging
from nova.openstack.common import periodic_task
diff --git a/nova/cells/messaging.py b/nova/cells/messaging.py
index b593ae01a8..55fbfd75f1 100644
--- a/nova/cells/messaging.py
+++ b/nova/cells/messaging.py
@@ -44,12 +44,12 @@ from nova.consoleauth import rpcapi as consoleauth_rpcapi
from nova import context
from nova.db import base
from nova import exception
+from nova.i18n import _
from nova.network import model as network_model
from nova import objects
from nova.objects import base as objects_base
from nova.objects import instance_fault as instance_fault_obj
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import importutils
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
diff --git a/nova/cells/rpcapi.py b/nova/cells/rpcapi.py
index 4a82de2795..87cf8f3c46 100644
--- a/nova/cells/rpcapi.py
+++ b/nova/cells/rpcapi.py
@@ -27,8 +27,8 @@ from oslo.config import cfg
from oslo import messaging
from nova import exception
+from nova.i18n import _
from nova.objects import base as objects_base
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova import rpc
diff --git a/nova/cells/scheduler.py b/nova/cells/scheduler.py
index bc9144511e..d9552f4324 100644
--- a/nova/cells/scheduler.py
+++ b/nova/cells/scheduler.py
@@ -30,10 +30,10 @@ from nova.compute import vm_states
from nova import conductor
from nova.db import base
from nova import exception
+from nova.i18n import _
from nova import objects
from nova.objects import base as obj_base
from nova.objects import instance_action as instance_action_obj
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.scheduler import utils as scheduler_utils
from nova import utils
diff --git a/nova/cells/state.py b/nova/cells/state.py
index c63df3f955..27261a2c98 100644
--- a/nova/cells/state.py
+++ b/nova/cells/state.py
@@ -26,8 +26,8 @@ from nova.cells import rpc_driver
from nova import context
from nova.db import base
from nova import exception
+from nova.i18n import _
from nova.openstack.common import fileutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
diff --git a/nova/cells/weights/mute_child.py b/nova/cells/weights/mute_child.py
index ff42d2673f..cc5c0a8c44 100644
--- a/nova/cells/weights/mute_child.py
+++ b/nova/cells/weights/mute_child.py
@@ -21,7 +21,7 @@ downgrade its likelihood of being chosen for scheduling requests.
from oslo.config import cfg
from nova.cells import weights
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
diff --git a/nova/cloudpipe/pipelib.py b/nova/cloudpipe/pipelib.py
index 8ac164cbb3..8962924b69 100644
--- a/nova/cloudpipe/pipelib.py
+++ b/nova/cloudpipe/pipelib.py
@@ -31,8 +31,8 @@ from nova.compute import flavors
from nova import crypto
from nova import db
from nova import exception
+from nova.i18n import _
from nova.openstack.common import fileutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova import paths
from nova import utils
diff --git a/nova/cmd/all.py b/nova/cmd/all.py
index 75946cd29c..7d7c9d43b1 100644
--- a/nova/cmd/all.py
+++ b/nova/cmd/all.py
@@ -29,9 +29,9 @@ import sys
from oslo.config import cfg
from nova import config
+from nova.i18n import _
from nova import objects
from nova.objectstore import s3server
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova import service
from nova import utils
diff --git a/nova/cmd/baremetal_deploy_helper.py b/nova/cmd/baremetal_deploy_helper.py
index fd997ce8e1..348561af99 100644
--- a/nova/cmd/baremetal_deploy_helper.py
+++ b/nova/cmd/baremetal_deploy_helper.py
@@ -29,9 +29,9 @@ from wsgiref import simple_server
from nova import config
from nova import context as nova_context
+from nova.i18n import _
from nova import objects
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import processutils
from nova.openstack.common import units
diff --git a/nova/cmd/baremetal_manage.py b/nova/cmd/baremetal_manage.py
index b62f744b56..e8283221ec 100644
--- a/nova/cmd/baremetal_manage.py
+++ b/nova/cmd/baremetal_manage.py
@@ -58,9 +58,9 @@ from oslo.config import cfg
import six
from nova import config
+from nova.i18n import _
from nova import objects
from nova.openstack.common import cliutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova import version
from nova.virt.baremetal.db import migration as bmdb_migration
diff --git a/nova/cmd/compute.py b/nova/cmd/compute.py
index 52f3c93ab9..bad4cf76d7 100644
--- a/nova/cmd/compute.py
+++ b/nova/cmd/compute.py
@@ -25,9 +25,9 @@ from nova.conductor import rpcapi as conductor_rpcapi
from nova import config
import nova.db.api
from nova import exception
+from nova.i18n import _
from nova import objects
from nova.objects import base as objects_base
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common.report import guru_meditation_report as gmr
from nova import service
diff --git a/nova/cmd/dhcpbridge.py b/nova/cmd/dhcpbridge.py
index 1045020065..2abb6a8ffd 100644
--- a/nova/cmd/dhcpbridge.py
+++ b/nova/cmd/dhcpbridge.py
@@ -31,11 +31,11 @@ from nova import config
from nova import context
import nova.db.api
from nova import exception
+from nova.i18n import _
from nova.network import rpcapi as network_rpcapi
from nova import objects
from nova.objects import base as objects_base
from nova.objects import network as network_obj
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import importutils
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
diff --git a/nova/cmd/manage.py b/nova/cmd/manage.py
index 5f75cb0223..6cd599f3b0 100644
--- a/nova/cmd/manage.py
+++ b/nova/cmd/manage.py
@@ -72,10 +72,10 @@ from nova import context
from nova import db
from nova.db import migration
from nova import exception
+from nova.i18n import _
from nova import objects
from nova.openstack.common import cliutils
from nova.openstack.common.db import exception as db_exc
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import importutils
from nova.openstack.common import log as logging
from nova import quota
diff --git a/nova/cmd/network.py b/nova/cmd/network.py
index 73d5c89bf2..490097aa71 100644
--- a/nova/cmd/network.py
+++ b/nova/cmd/network.py
@@ -25,9 +25,9 @@ from nova.conductor import rpcapi as conductor_rpcapi
from nova import config
import nova.db.api
from nova import exception
+from nova.i18n import _
from nova import objects
from nova.objects import base as objects_base
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common.report import guru_meditation_report as gmr
from nova import service
diff --git a/nova/compute/api.py b/nova/compute/api.py
index 612e1c1da2..0f2e195bdf 100644
--- a/nova/compute/api.py
+++ b/nova/compute/api.py
@@ -43,6 +43,7 @@ from nova import crypto
from nova.db import base
from nova import exception
from nova import hooks
+from nova.i18n import _
from nova import image
from nova import network
from nova.network import model as network_model
@@ -54,7 +55,6 @@ from nova.objects import base as obj_base
from nova.objects import quotas as quotas_obj
from nova.objects import security_group as security_group_obj
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import strutils
from nova.openstack.common import timeutils
diff --git a/nova/compute/claims.py b/nova/compute/claims.py
index 27d8c0bc7b..046d171692 100644
--- a/nova/compute/claims.py
+++ b/nova/compute/claims.py
@@ -18,8 +18,8 @@ Claim objects for use with resource tracking.
"""
from nova import exception
+from nova.i18n import _
from nova.objects import base as obj_base
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova.pci import pci_request
diff --git a/nova/compute/flavors.py b/nova/compute/flavors.py
index e391943158..1a8760d408 100644
--- a/nova/compute/flavors.py
+++ b/nova/compute/flavors.py
@@ -27,8 +27,8 @@ import six
from nova import context
from nova import db
from nova import exception
+from nova.i18n import _
from nova.openstack.common.db import exception as db_exc
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import strutils
from nova.pci import pci_request
diff --git a/nova/compute/manager.py b/nova/compute/manager.py
index f71f7e4c84..c9e94ef345 100644
--- a/nova/compute/manager.py
+++ b/nova/compute/manager.py
@@ -57,6 +57,10 @@ from nova import consoleauth
import nova.context
from nova import exception
from nova import hooks
+from nova.i18n import _
+from nova.i18n import _LE
+from nova.i18n import _LI
+from nova.i18n import _LW
from nova import image
from nova.image import glance
from nova import manager
@@ -68,10 +72,6 @@ from nova.objects import base as obj_base
from nova.objects import instance as instance_obj
from nova.objects import quotas as quotas_obj
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
-from nova.openstack.common.gettextutils import _LE
-from nova.openstack.common.gettextutils import _LI
-from nova.openstack.common.gettextutils import _LW
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova.openstack.common import periodic_task
diff --git a/nova/compute/monitors/__init__.py b/nova/compute/monitors/__init__.py
index 511738599f..fab30ada13 100644
--- a/nova/compute/monitors/__init__.py
+++ b/nova/compute/monitors/__init__.py
@@ -26,8 +26,8 @@ import types
from oslo.config import cfg
import six
+from nova.i18n import _
from nova import loadables
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
diff --git a/nova/compute/monitors/virt/cpu_monitor.py b/nova/compute/monitors/virt/cpu_monitor.py
index 1cc92db370..9295120769 100644
--- a/nova/compute/monitors/virt/cpu_monitor.py
+++ b/nova/compute/monitors/virt/cpu_monitor.py
@@ -22,7 +22,7 @@ from oslo.config import cfg
from nova.compute import monitors
from nova.compute.monitors import cpu_monitor as monitor
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
diff --git a/nova/compute/resource_tracker.py b/nova/compute/resource_tracker.py
index aaf0eb3890..86949dd076 100644
--- a/nova/compute/resource_tracker.py
+++ b/nova/compute/resource_tracker.py
@@ -29,9 +29,9 @@ from nova.compute import vm_states
from nova import conductor
from nova import context
from nova import exception
+from nova.i18n import _
from nova import objects
from nova.objects import base as obj_base
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import importutils
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
diff --git a/nova/compute/rpcapi.py b/nova/compute/rpcapi.py
index 7dc4543c50..5de33f0729 100644
--- a/nova/compute/rpcapi.py
+++ b/nova/compute/rpcapi.py
@@ -21,8 +21,8 @@ from oslo import messaging
from nova import block_device
from nova import exception
+from nova.i18n import _
from nova.objects import base as objects_base
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import jsonutils
from nova import rpc
diff --git a/nova/compute/utils.py b/nova/compute/utils.py
index a0161029f0..8836f5039d 100644
--- a/nova/compute/utils.py
+++ b/nova/compute/utils.py
@@ -25,11 +25,11 @@ from nova.compute import flavors
from nova.compute import power_state
from nova.compute import task_states
from nova import exception
+from nova.i18n import _
from nova.network import model as network_model
from nova import notifications
from nova import objects
from nova.objects import base as obj_base
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log
from nova import rpc
from nova import utils
diff --git a/nova/conductor/api.py b/nova/conductor/api.py
index 576364c198..b19be6d67a 100644
--- a/nova/conductor/api.py
+++ b/nova/conductor/api.py
@@ -20,7 +20,7 @@ from oslo import messaging
from nova import baserpc
from nova.conductor import manager
from nova.conductor import rpcapi
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova import utils
diff --git a/nova/conductor/manager.py b/nova/conductor/manager.py
index 99aefc6b2c..2166d3daa8 100644
--- a/nova/conductor/manager.py
+++ b/nova/conductor/manager.py
@@ -31,6 +31,7 @@ from nova.compute import vm_states
from nova.conductor.tasks import live_migrate
from nova.db import base
from nova import exception
+from nova.i18n import _
from nova import image
from nova import manager
from nova import network
@@ -40,7 +41,6 @@ from nova import objects
from nova.objects import base as nova_object
from nova.objects import quotas as quotas_obj
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
diff --git a/nova/conductor/tasks/live_migrate.py b/nova/conductor/tasks/live_migrate.py
index ec349150fe..f92f94e22f 100644
--- a/nova/conductor/tasks/live_migrate.py
+++ b/nova/conductor/tasks/live_migrate.py
@@ -17,8 +17,8 @@ from nova.compute import rpcapi as compute_rpcapi
from nova.compute import utils as compute_utils
from nova import db
from nova import exception
+from nova.i18n import _
from nova import image
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.scheduler import rpcapi as scheduler_rpcapi
from nova.scheduler import utils as scheduler_utils
diff --git a/nova/console/websocketproxy.py b/nova/console/websocketproxy.py
index d02dcd043b..fbc2be8933 100644
--- a/nova/console/websocketproxy.py
+++ b/nova/console/websocketproxy.py
@@ -25,7 +25,7 @@ import websockify
from nova.consoleauth import rpcapi as consoleauth_rpcapi
from nova import context
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
LOG = logging.getLogger(__name__)
diff --git a/nova/console/xvp.py b/nova/console/xvp.py
index f55645b2d6..85e3f43235 100644
--- a/nova/console/xvp.py
+++ b/nova/console/xvp.py
@@ -23,8 +23,8 @@ from oslo.config import cfg
from nova import context
from nova import db
+from nova.i18n import _
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import processutils
from nova import paths
diff --git a/nova/consoleauth/manager.py b/nova/consoleauth/manager.py
index 966b398a45..ff92f1b579 100644
--- a/nova/consoleauth/manager.py
+++ b/nova/consoleauth/manager.py
@@ -23,9 +23,9 @@ from oslo import messaging
from nova.cells import rpcapi as cells_rpcapi
from nova.compute import rpcapi as compute_rpcapi
+from nova.i18n import _, _LW
from nova import manager
from nova import objects
-from nova.openstack.common.gettextutils import _, _LW
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova.openstack.common import memorycache
diff --git a/nova/context.py b/nova/context.py
index ae0d9b51fd..c512ad534c 100644
--- a/nova/context.py
+++ b/nova/context.py
@@ -23,7 +23,7 @@ import uuid
import six
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import local
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
diff --git a/nova/crypto.py b/nova/crypto.py
index 8d6f8d4402..ebbc3068cd 100644
--- a/nova/crypto.py
+++ b/nova/crypto.py
@@ -35,9 +35,9 @@ from pyasn1.type import univ
from nova import context
from nova import db
from nova import exception
+from nova.i18n import _
from nova.openstack.common import excutils
from nova.openstack.common import fileutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import processutils
from nova.openstack.common import timeutils
diff --git a/nova/db/api.py b/nova/db/api.py
index ee7ad22209..ee48e1151e 100644
--- a/nova/db/api.py
+++ b/nova/db/api.py
@@ -31,8 +31,8 @@ from eventlet import tpool
from oslo.config import cfg
from nova.cells import rpcapi as cells_rpcapi
+from nova.i18n import _
from nova.openstack.common.db import api as db_api
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index 0d5458b849..a333cb2721 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -52,11 +52,11 @@ from nova.compute import vm_states
import nova.context
from nova.db.sqlalchemy import models
from nova import exception
+from nova.i18n import _
from nova.openstack.common.db import exception as db_exc
from nova.openstack.common.db.sqlalchemy import session as db_session
from nova.openstack.common.db.sqlalchemy import utils as sqlalchemyutils
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
from nova.openstack.common import uuidutils
diff --git a/nova/db/sqlalchemy/migrate_repo/versions/216_havana.py b/nova/db/sqlalchemy/migrate_repo/versions/216_havana.py
index 8db11e692b..1712784e4b 100644
--- a/nova/db/sqlalchemy/migrate_repo/versions/216_havana.py
+++ b/nova/db/sqlalchemy/migrate_repo/versions/216_havana.py
@@ -20,7 +20,7 @@ from sqlalchemy import ForeignKey, Index, Integer, MetaData, String, Table
from sqlalchemy import Text
from sqlalchemy.types import NullType
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
LOG = logging.getLogger(__name__)
diff --git a/nova/db/sqlalchemy/migration.py b/nova/db/sqlalchemy/migration.py
index 2d140e67d9..388e6d2fee 100644
--- a/nova/db/sqlalchemy/migration.py
+++ b/nova/db/sqlalchemy/migration.py
@@ -23,7 +23,7 @@ import sqlalchemy
from nova.db.sqlalchemy import api as db_session
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
INIT_VERSION = 215
_REPOSITORY = None
diff --git a/nova/db/sqlalchemy/utils.py b/nova/db/sqlalchemy/utils.py
index 79cecc171b..fcb33922a2 100644
--- a/nova/db/sqlalchemy/utils.py
+++ b/nova/db/sqlalchemy/utils.py
@@ -23,8 +23,8 @@ from sqlalchemy.types import NullType
from nova.db.sqlalchemy import api as db
from nova import exception
+from nova.i18n import _
from nova.openstack.common.db.sqlalchemy import utils as oslodbutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
diff --git a/nova/debugger.py b/nova/debugger.py
index 29d25d482f..8aa889f1a2 100644
--- a/nova/debugger.py
+++ b/nova/debugger.py
@@ -60,7 +60,7 @@ def init():
if not (CONF.remote_debug.host and CONF.remote_debug.port):
return
- from nova.openstack.common.gettextutils import _
+ from nova.i18n import _
from nova.openstack.common import log as logging
LOG = logging.getLogger(__name__)
diff --git a/nova/exception.py b/nova/exception.py
index 8eff489bb2..64f79d5871 100644
--- a/nova/exception.py
+++ b/nova/exception.py
@@ -28,8 +28,8 @@ import sys
from oslo.config import cfg
import webob.exc
+from nova.i18n import _
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova import safe_utils
diff --git a/nova/filters.py b/nova/filters.py
index 0fcb8560c4..1ecd988249 100644
--- a/nova/filters.py
+++ b/nova/filters.py
@@ -17,8 +17,8 @@
Filter support
"""
+from nova.i18n import _
from nova import loadables
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
LOG = logging.getLogger(__name__)
diff --git a/nova/hooks.py b/nova/hooks.py
index d56455e2a1..3c67bb3aed 100644
--- a/nova/hooks.py
+++ b/nova/hooks.py
@@ -46,7 +46,7 @@ import functools
import stevedore
-from nova.openstack.common.gettextutils import _LE
+from nova.i18n import _LE
from nova.openstack.common import log as logging
LOG = logging.getLogger(__name__)
diff --git a/nova/i18n.py b/nova/i18n.py
new file mode 100644
index 0000000000..e3e5673398
--- /dev/null
+++ b/nova/i18n.py
@@ -0,0 +1,66 @@
+# Copyright 2014 IBM Corp.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""oslo.i18n integration module.
+
+See http://docs.openstack.org/developer/oslo.i18n/usage.html .
+
+"""
+
+from oslo import i18n
+
+from nova.openstack.common import gettextutils
+
+DOMAIN = 'nova'
+
+_translators = i18n.TranslatorFactory(domain=DOMAIN)
+
+# The primary translation function using the well-known name "_"
+_ = _translators.primary
+
+# Translators for log levels.
+#
+# The abbreviated names are meant to reflect the usual use of a short
+# name like '_'. The "L" is for "log" and the other letter comes from
+# the level.
+_LI = _translators.log_info
+_LW = _translators.log_warning
+_LE = _translators.log_error
+_LC = _translators.log_critical
+
+
+def translate(value, user_locale):
+ return i18n.translate(value, user_locale)
+
+
+def get_available_languages():
+ return i18n.get_available_languages(DOMAIN)
+
+
+# Parts in oslo-incubator are still using gettextutils._(), _LI(), etc., from
+# oslo-incubator. Until these parts are changed to use oslo.i18n, Keystone
+# needs to do something to allow them to work. One option is to continue to
+# initialize gettextutils, but with the way that Nova has initialization
+# spread out over mutltiple entry points, we'll monkey-patch
+# gettextutils._(), _LI(), etc., to use our oslo.i18n versions.
+
+# FIXME(dims): Remove the monkey-patching and update openstack-common.conf and
+# do a sync with oslo-incubator to remove gettextutils once oslo-incubator
+# isn't using oslo-incubator gettextutils any more.
+
+gettextutils._ = _
+gettextutils._LI = _LI
+gettextutils._LW = _LW
+gettextutils._LE = _LE
+gettextutils._LC = _LC
diff --git a/nova/image/download/__init__.py b/nova/image/download/__init__.py
index ad0affb213..55d125b85c 100644
--- a/nova/image/download/__init__.py
+++ b/nova/image/download/__init__.py
@@ -19,7 +19,7 @@ from oslo.config import cfg
import stevedore.driver
import stevedore.extension
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
CONF = cfg.CONF
LOG = logging.getLogger(__name__)
diff --git a/nova/image/download/file.py b/nova/image/download/file.py
index 7dc6316703..93ec551c65 100644
--- a/nova/image/download/file.py
+++ b/nova/image/download/file.py
@@ -18,8 +18,8 @@ import logging
from oslo.config import cfg
from nova import exception
+from nova.i18n import _
import nova.image.download.base as xfer_base
-from nova.openstack.common.gettextutils import _
import nova.virt.libvirt.utils as lv_utils
diff --git a/nova/image/glance.py b/nova/image/glance.py
index de81d3d51d..7d20ad277c 100644
--- a/nova/image/glance.py
+++ b/nova/image/glance.py
@@ -31,8 +31,8 @@ import six
import six.moves.urllib.parse as urlparse
from nova import exception
+from nova.i18n import _
import nova.image.download as image_xfers
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
diff --git a/nova/image/s3.py b/nova/image/s3.py
index db54630bef..05a532baee 100644
--- a/nova/image/s3.py
+++ b/nova/image/s3.py
@@ -31,8 +31,8 @@ from oslo.config import cfg
from nova.api.ec2 import ec2utils
import nova.cert.rpcapi
from nova import exception
+from nova.i18n import _
from nova.image import glance
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import processutils
from nova import utils
diff --git a/nova/ipv6/account_identifier.py b/nova/ipv6/account_identifier.py
index db9c658968..23d77c7f95 100644
--- a/nova/ipv6/account_identifier.py
+++ b/nova/ipv6/account_identifier.py
@@ -21,7 +21,7 @@ import hashlib
import netaddr
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
def to_global(prefix, mac, project_id):
diff --git a/nova/ipv6/rfc2462.py b/nova/ipv6/rfc2462.py
index cda35b0a45..92746e5a07 100644
--- a/nova/ipv6/rfc2462.py
+++ b/nova/ipv6/rfc2462.py
@@ -19,7 +19,7 @@
import netaddr
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
def to_global(prefix, mac, project_id):
diff --git a/nova/keymgr/conf_key_mgr.py b/nova/keymgr/conf_key_mgr.py
index 4b9cb67208..3cb44a5a80 100644
--- a/nova/keymgr/conf_key_mgr.py
+++ b/nova/keymgr/conf_key_mgr.py
@@ -33,8 +33,8 @@ encryption key so *any* volume can be decrypted once the fixed key is known.
from oslo.config import cfg
+from nova.i18n import _
from nova.keymgr import single_key_mgr
-from nova.openstack.common.gettextutils import _
key_mgr_opts = [
cfg.StrOpt('fixed_key',
diff --git a/nova/keymgr/mock_key_mgr.py b/nova/keymgr/mock_key_mgr.py
index 51684fec46..af09b6877b 100644
--- a/nova/keymgr/mock_key_mgr.py
+++ b/nova/keymgr/mock_key_mgr.py
@@ -29,9 +29,9 @@ this class.
import array
from nova import exception
+from nova.i18n import _
from nova.keymgr import key
from nova.keymgr import key_mgr
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import uuidutils
from nova import utils
diff --git a/nova/keymgr/single_key_mgr.py b/nova/keymgr/single_key_mgr.py
index b6d4f35d01..33c24c0e63 100644
--- a/nova/keymgr/single_key_mgr.py
+++ b/nova/keymgr/single_key_mgr.py
@@ -20,8 +20,8 @@ all invocations of get_key.
from nova import exception
+from nova.i18n import _
from nova.keymgr import mock_key_mgr
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
diff --git a/nova/network/api.py b/nova/network/api.py
index 36c99a31e4..2aec7e8f8e 100644
--- a/nova/network/api.py
+++ b/nova/network/api.py
@@ -20,13 +20,13 @@ import functools
from nova.compute import flavors
from nova import exception
+from nova.i18n import _
from nova.network import base_api
from nova.network import floating_ips
from nova.network import model as network_model
from nova.network import rpcapi as network_rpcapi
from nova import objects
from nova.objects import base as obj_base
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova import policy
from nova import utils
diff --git a/nova/network/base_api.py b/nova/network/base_api.py
index 54674e1244..dd712ac419 100644
--- a/nova/network/base_api.py
+++ b/nova/network/base_api.py
@@ -18,10 +18,10 @@ import inspect
from nova.db import base
from nova import hooks
+from nova.i18n import _
from nova.network import model as network_model
from nova import objects
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
diff --git a/nova/network/driver.py b/nova/network/driver.py
index 973ec30f8e..04e7d607f8 100644
--- a/nova/network/driver.py
+++ b/nova/network/driver.py
@@ -16,7 +16,7 @@ import sys
from oslo.config import cfg
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import importutils
from nova.openstack.common import log as logging
diff --git a/nova/network/floating_ips.py b/nova/network/floating_ips.py
index 17235f6e6e..9782f673f2 100644
--- a/nova/network/floating_ips.py
+++ b/nova/network/floating_ips.py
@@ -21,10 +21,10 @@ from oslo import messaging
from nova import context
from nova.db import base
from nova import exception
+from nova.i18n import _
from nova.network import rpcapi as network_rpcapi
from nova import objects
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import importutils
from nova.openstack.common import log as logging
from nova.openstack.common import processutils
diff --git a/nova/network/ldapdns.py b/nova/network/ldapdns.py
index 4d5bb0c453..488467f119 100644
--- a/nova/network/ldapdns.py
+++ b/nova/network/ldapdns.py
@@ -23,8 +23,8 @@ import time
from oslo.config import cfg
from nova import exception
+from nova.i18n import _
from nova.network import dns_driver
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova import utils
diff --git a/nova/network/linux_net.py b/nova/network/linux_net.py
index cc099801db..84885be6d5 100644
--- a/nova/network/linux_net.py
+++ b/nova/network/linux_net.py
@@ -27,10 +27,10 @@ from oslo.config import cfg
import six
from nova import exception
+from nova.i18n import _
from nova import objects
from nova.openstack.common import excutils
from nova.openstack.common import fileutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import importutils
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
diff --git a/nova/network/manager.py b/nova/network/manager.py
index a85b6ba991..dae573feea 100644
--- a/nova/network/manager.py
+++ b/nova/network/manager.py
@@ -56,6 +56,7 @@ from oslo import messaging
from nova import conductor
from nova import context
from nova import exception
+from nova.i18n import _
from nova import ipv6
from nova import manager
from nova.network import api as network_api
@@ -67,7 +68,6 @@ from nova import objects
from nova.objects import base as obj_base
from nova.objects import quotas as quotas_obj
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import importutils
from nova.openstack.common import log as logging
from nova.openstack.common import periodic_task
diff --git a/nova/network/minidns.py b/nova/network/minidns.py
index 6c1dce9ce3..2f9c388a5a 100644
--- a/nova/network/minidns.py
+++ b/nova/network/minidns.py
@@ -19,8 +19,8 @@ import tempfile
from oslo.config import cfg
from nova import exception
+from nova.i18n import _
from nova.network import dns_driver
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
CONF = cfg.CONF
diff --git a/nova/network/model.py b/nova/network/model.py
index 9febd55984..2af5e0542e 100644
--- a/nova/network/model.py
+++ b/nova/network/model.py
@@ -20,7 +20,7 @@ import netaddr
import six
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import jsonutils
diff --git a/nova/network/neutronv2/api.py b/nova/network/neutronv2/api.py
index 2cc2123f9f..f26224de87 100644
--- a/nova/network/neutronv2/api.py
+++ b/nova/network/neutronv2/api.py
@@ -24,13 +24,13 @@ from nova.compute import flavors
from nova.compute import utils as compute_utils
from nova import conductor
from nova import exception
+from nova.i18n import _
from nova.network import base_api
from nova.network import model as network_model
from nova.network import neutronv2
from nova.network.neutronv2 import constants
from nova.network.security_group import openstack_driver
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import uuidutils
diff --git a/nova/network/security_group/neutron_driver.py b/nova/network/security_group/neutron_driver.py
index 2c07a2dc37..de88f13203 100644
--- a/nova/network/security_group/neutron_driver.py
+++ b/nova/network/security_group/neutron_driver.py
@@ -23,11 +23,11 @@ from webob import exc
from nova.compute import api as compute_api
from nova import exception
+from nova.i18n import _
from nova.network import neutronv2
from nova.network.security_group import security_group_base
from nova import objects
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import uuidutils
from nova import utils
diff --git a/nova/network/security_group/security_group_base.py b/nova/network/security_group/security_group_base.py
index 6710b2d2af..f8a2aa1c8b 100644
--- a/nova/network/security_group/security_group_base.py
+++ b/nova/network/security_group/security_group_base.py
@@ -22,7 +22,7 @@ import urllib
from oslo.config import cfg
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova import utils
CONF = cfg.CONF
diff --git a/nova/notifications.py b/nova/notifications.py
index f48542edfb..8c43e5959c 100644
--- a/nova/notifications.py
+++ b/nova/notifications.py
@@ -25,13 +25,13 @@ from oslo.config import cfg
from nova.compute import flavors
import nova.context
from nova import db
+from nova.i18n import _
from nova.image import glance
from nova import network
from nova.network import model as network_model
from nova.objects import base as obj_base
from nova.openstack.common import context as common_context
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log
from nova.openstack.common import timeutils
from nova import rpc
diff --git a/nova/objects/base.py b/nova/objects/base.py
index 79d07b2a0d..63a2705aaa 100644
--- a/nova/objects/base.py
+++ b/nova/objects/base.py
@@ -24,9 +24,9 @@ import six
from nova import context
from nova import exception
+from nova.i18n import _
from nova import objects
from nova.objects import fields
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import versionutils
diff --git a/nova/objects/block_device.py b/nova/objects/block_device.py
index 40d06e927e..18c2b6fda7 100644
--- a/nova/objects/block_device.py
+++ b/nova/objects/block_device.py
@@ -17,10 +17,10 @@ from nova.cells import opts as cells_opts
from nova.cells import rpcapi as cells_rpcapi
from nova import db
from nova import exception
+from nova.i18n import _
from nova import objects
from nova.objects import base
from nova.objects import fields
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
diff --git a/nova/objects/fields.py b/nova/objects/fields.py
index 57936a28e9..fad6011c5e 100644
--- a/nova/objects/fields.py
+++ b/nova/objects/fields.py
@@ -19,8 +19,8 @@ import iso8601
import netaddr
import six
+from nova.i18n import _
from nova.network import model as network_model
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import timeutils
diff --git a/nova/objects/instance.py b/nova/objects/instance.py
index bd046304b5..5c7fe317ac 100644
--- a/nova/objects/instance.py
+++ b/nova/objects/instance.py
@@ -18,11 +18,11 @@ from nova import compute
from nova.compute import flavors
from nova import db
from nova import exception
+from nova.i18n import _
from nova import notifications
from nova import objects
from nova.objects import base
from nova.objects import fields
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
from nova import utils
diff --git a/nova/objects/instance_fault.py b/nova/objects/instance_fault.py
index 9be7a4e81e..7c2b7a1fd8 100644
--- a/nova/objects/instance_fault.py
+++ b/nova/objects/instance_fault.py
@@ -18,10 +18,10 @@ from nova.cells import opts as cells_opts
from nova.cells import rpcapi as cells_rpcapi
from nova import db
from nova import exception
+from nova.i18n import _LE
from nova import objects
from nova.objects import base
from nova.objects import fields
-from nova.openstack.common.gettextutils import _LE
from nova.openstack.common import log as logging
diff --git a/nova/objects/instance_info_cache.py b/nova/objects/instance_info_cache.py
index 1c6f57b123..10b128e0e8 100644
--- a/nova/objects/instance_info_cache.py
+++ b/nova/objects/instance_info_cache.py
@@ -16,9 +16,9 @@ from nova.cells import opts as cells_opts
from nova.cells import rpcapi as cells_rpcapi
from nova import db
from nova import exception
+from nova.i18n import _
from nova.objects import base
from nova.objects import fields
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
LOG = logging.getLogger(__name__)
diff --git a/nova/pci/pci_manager.py b/nova/pci/pci_manager.py
index bdbad0d745..e99117b881 100644
--- a/nova/pci/pci_manager.py
+++ b/nova/pci/pci_manager.py
@@ -20,9 +20,9 @@ from nova.compute import task_states
from nova.compute import vm_states
from nova import context
from nova import exception
+from nova.i18n import _
from nova.objects import instance
from nova.objects import pci_device as pci_device_obj
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.pci import pci_device
from nova.pci import pci_request
diff --git a/nova/quota.py b/nova/quota.py
index bd3d364b8a..4e1644a178 100644
--- a/nova/quota.py
+++ b/nova/quota.py
@@ -23,8 +23,8 @@ import six
from nova import db
from nova import exception
+from nova.i18n import _
from nova.objects import keypair as keypair_obj
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import importutils
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
diff --git a/nova/scheduler/chance.py b/nova/scheduler/chance.py
index bb04eb9c3d..65a24030c0 100644
--- a/nova/scheduler/chance.py
+++ b/nova/scheduler/chance.py
@@ -25,7 +25,7 @@ from oslo.config import cfg
from nova.compute import rpcapi as compute_rpcapi
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.scheduler import driver
CONF = cfg.CONF
diff --git a/nova/scheduler/driver.py b/nova/scheduler/driver.py
index cb1942262f..3766ec2e85 100644
--- a/nova/scheduler/driver.py
+++ b/nova/scheduler/driver.py
@@ -27,8 +27,8 @@ from nova.compute import utils as compute_utils
from nova.compute import vm_states
from nova import db
from nova import exception
+from nova.i18n import _
from nova import notifications
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import importutils
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
diff --git a/nova/scheduler/filter_scheduler.py b/nova/scheduler/filter_scheduler.py
index 96883b08c8..415f46d32d 100644
--- a/nova/scheduler/filter_scheduler.py
+++ b/nova/scheduler/filter_scheduler.py
@@ -25,8 +25,8 @@ from oslo.config import cfg
from nova.compute import rpcapi as compute_rpcapi
from nova import exception
+from nova.i18n import _
from nova.objects import instance_group as instance_group_obj
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.pci import pci_request
from nova import rpc
diff --git a/nova/scheduler/filters/compute_filter.py b/nova/scheduler/filters/compute_filter.py
index 94aa2490bb..9b7022401d 100644
--- a/nova/scheduler/filters/compute_filter.py
+++ b/nova/scheduler/filters/compute_filter.py
@@ -15,7 +15,7 @@
from oslo.config import cfg
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.scheduler import filters
from nova import servicegroup
diff --git a/nova/scheduler/filters/core_filter.py b/nova/scheduler/filters/core_filter.py
index 45d97b9ba7..0c807c3fde 100644
--- a/nova/scheduler/filters/core_filter.py
+++ b/nova/scheduler/filters/core_filter.py
@@ -17,7 +17,7 @@
from oslo.config import cfg
-from nova.openstack.common.gettextutils import _LW
+from nova.i18n import _LW
from nova.openstack.common import log as logging
from nova.scheduler import filters
from nova.scheduler.filters import utils
diff --git a/nova/scheduler/filters/ram_filter.py b/nova/scheduler/filters/ram_filter.py
index 9afcceaa97..4677d2feb3 100644
--- a/nova/scheduler/filters/ram_filter.py
+++ b/nova/scheduler/filters/ram_filter.py
@@ -16,7 +16,7 @@
from oslo.config import cfg
-from nova.openstack.common.gettextutils import _LW
+from nova.i18n import _LW
from nova.openstack.common import log as logging
from nova.scheduler import filters
from nova.scheduler.filters import utils
diff --git a/nova/scheduler/filters/trusted_filter.py b/nova/scheduler/filters/trusted_filter.py
index 29cd4f4f5e..af3c2f899b 100644
--- a/nova/scheduler/filters/trusted_filter.py
+++ b/nova/scheduler/filters/trusted_filter.py
@@ -50,7 +50,7 @@ from oslo.config import cfg
from nova import context
from nova import db
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
diff --git a/nova/scheduler/filters/utils.py b/nova/scheduler/filters/utils.py
index 580b2cb385..151811f4d9 100644
--- a/nova/scheduler/filters/utils.py
+++ b/nova/scheduler/filters/utils.py
@@ -15,8 +15,8 @@
"""Bench of utility methods used by filters."""
+from nova.i18n import _LI
from nova.objects import aggregate
-from nova.openstack.common.gettextutils import _LI
from nova.openstack.common import log as logging
LOG = logging.getLogger(__name__)
diff --git a/nova/scheduler/host_manager.py b/nova/scheduler/host_manager.py
index 227efa30cd..9cea311ebf 100644
--- a/nova/scheduler/host_manager.py
+++ b/nova/scheduler/host_manager.py
@@ -26,7 +26,7 @@ from nova.compute import task_states
from nova.compute import vm_states
from nova import db
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
diff --git a/nova/scheduler/scheduler_options.py b/nova/scheduler/scheduler_options.py
index 7dbbcd56e8..48019d5187 100644
--- a/nova/scheduler/scheduler_options.py
+++ b/nova/scheduler/scheduler_options.py
@@ -26,8 +26,8 @@ import os
from oslo.config import cfg
+from nova.i18n import _
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
diff --git a/nova/scheduler/utils.py b/nova/scheduler/utils.py
index 2d2f1618d0..2e7f4b67c5 100644
--- a/nova/scheduler/utils.py
+++ b/nova/scheduler/utils.py
@@ -22,9 +22,9 @@ from nova.compute import flavors
from nova.compute import utils as compute_utils
from nova import db
from nova import exception
+from nova.i18n import _
from nova import notifications
from nova.objects import base as obj_base
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova import rpc
diff --git a/nova/service.py b/nova/service.py
index 8618e7c3e3..cdb0b1f117 100644
--- a/nova/service.py
+++ b/nova/service.py
@@ -29,8 +29,8 @@ from nova import conductor
from nova import context
from nova import debugger
from nova import exception
+from nova.i18n import _
from nova.objects import base as objects_base
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import importutils
from nova.openstack.common import log as logging
from nova.openstack.common import processutils
diff --git a/nova/servicegroup/api.py b/nova/servicegroup/api.py
index 0016c5c53e..bbb0fd55fd 100644
--- a/nova/servicegroup/api.py
+++ b/nova/servicegroup/api.py
@@ -20,7 +20,7 @@ import random
from oslo.config import cfg
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import importutils
from nova.openstack.common import log as logging
from nova import utils
diff --git a/nova/servicegroup/drivers/db.py b/nova/servicegroup/drivers/db.py
index e7f74e7069..bf45d1ada5 100644
--- a/nova/servicegroup/drivers/db.py
+++ b/nova/servicegroup/drivers/db.py
@@ -18,7 +18,7 @@ import six
from nova import conductor
from nova import context
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
from nova.servicegroup import api
diff --git a/nova/servicegroup/drivers/mc.py b/nova/servicegroup/drivers/mc.py
index e83163ff73..3d643bb20c 100644
--- a/nova/servicegroup/drivers/mc.py
+++ b/nova/servicegroup/drivers/mc.py
@@ -21,7 +21,7 @@ from oslo.config import cfg
from nova import conductor
from nova import context
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.openstack.common import memorycache
from nova.openstack.common import timeutils
diff --git a/nova/servicegroup/drivers/zk.py b/nova/servicegroup/drivers/zk.py
index a7a8b7b465..9ba3ae64f9 100644
--- a/nova/servicegroup/drivers/zk.py
+++ b/nova/servicegroup/drivers/zk.py
@@ -20,7 +20,7 @@ import eventlet
from oslo.config import cfg
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import importutils
from nova.openstack.common import log as logging
from nova.openstack.common import loopingcall
diff --git a/nova/storage/linuxscsi.py b/nova/storage/linuxscsi.py
index 09669fa565..f261094a13 100644
--- a/nova/storage/linuxscsi.py
+++ b/nova/storage/linuxscsi.py
@@ -14,7 +14,7 @@
"""Generic linux scsi subsystem utilities."""
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.openstack.common import loopingcall
from nova.openstack.common import processutils
diff --git a/nova/tests/api/openstack/compute/plugins/v3/test_servers.py b/nova/tests/api/openstack/compute/plugins/v3/test_servers.py
index 8f6a6e5889..7631727caf 100644
--- a/nova/tests/api/openstack/compute/plugins/v3/test_servers.py
+++ b/nova/tests/api/openstack/compute/plugins/v3/test_servers.py
@@ -42,12 +42,12 @@ from nova import context
from nova import db
from nova.db.sqlalchemy import models
from nova import exception
+from nova.i18n import _
from nova.image import glance
from nova.network import manager
from nova.network.neutronv2 import api as neutron_api
from nova import objects
from nova.objects import instance as instance_obj
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import jsonutils
from nova.openstack.common import policy as common_policy
from nova.openstack.common import timeutils
diff --git a/nova/tests/api/openstack/compute/test_servers.py b/nova/tests/api/openstack/compute/test_servers.py
index 7913bff3a5..8168a169c9 100644
--- a/nova/tests/api/openstack/compute/test_servers.py
+++ b/nova/tests/api/openstack/compute/test_servers.py
@@ -43,12 +43,12 @@ from nova import context
from nova import db
from nova.db.sqlalchemy import models
from nova import exception
+from nova.i18n import _
from nova.image import glance
from nova.network import manager
from nova.network.neutronv2 import api as neutron_api
from nova import objects
from nova.objects import instance as instance_obj
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import jsonutils
from nova.openstack.common import policy as common_policy
from nova.openstack.common import timeutils
diff --git a/nova/tests/api/openstack/fakes.py b/nova/tests/api/openstack/fakes.py
index 86b7bb8829..a41e48f484 100644
--- a/nova/tests/api/openstack/fakes.py
+++ b/nova/tests/api/openstack/fakes.py
@@ -719,7 +719,7 @@ def stub_bdm_get_all_by_instance(context, instance_uuid, use_slave=False):
'volume_id': 'volume_id2', 'instance_uuid': instance_uuid})]
-def fake_get_available_languages(domain):
+def fake_get_available_languages():
existing_translations = ['en_GB', 'en_AU', 'de', 'zh_CN', 'en_US']
return existing_translations
diff --git a/nova/tests/api/openstack/test_faults.py b/nova/tests/api/openstack/test_faults.py
index 81d4f860ff..889f79b57b 100644
--- a/nova/tests/api/openstack/test_faults.py
+++ b/nova/tests/api/openstack/test_faults.py
@@ -25,7 +25,7 @@ import nova.api.openstack
from nova.api.openstack import common
from nova.api.openstack import wsgi
from nova import exception
-from nova.openstack.common import gettextutils
+from nova import i18n
from nova.openstack.common import jsonutils
from nova import test
@@ -33,32 +33,34 @@ from nova import test
class TestFaultWrapper(test.NoDBTestCase):
"""Tests covering `nova.api.openstack:FaultWrapper` class."""
- @mock.patch('nova.openstack.common.gettextutils.translate')
- def test_safe_exception_translated(self, mock_translate):
- msg = gettextutils.Message('Should be translated.', domain='nova')
- safe_exception = exception.NotFound()
- safe_exception.msg_fmt = msg
+ @mock.patch('oslo.i18n.translate')
+ @mock.patch('nova.i18n.get_available_languages')
+ def test_safe_exception_translated(self, mock_languages, mock_translate):
+ def fake_translate(value, locale):
+ return "I've been translated!"
+
+ mock_translate.side_effect = fake_translate
+
+ # Create an exception, passing a translatable message with a
+ # known value we can test for later.
+ safe_exception = exception.NotFound(i18n._('Should be translated.'))
safe_exception.safe = True
safe_exception.code = 404
req = webob.Request.blank('/')
- def fake_translate(mesg, locale):
- if mesg == "Should be translated.":
- return "I've been translated!"
- return mesg
-
- mock_translate.side_effect = fake_translate
-
def raiser(*args, **kwargs):
raise safe_exception
wrapper = nova.api.openstack.FaultWrapper(raiser)
response = req.get_response(wrapper)
+ # The text of the exception's message attribute (replaced
+ # above with a non-default value) should be passed to
+ # translate().
+ mock_translate.assert_any_call(u'Should be translated.', None)
+ # The return value from translate() should appear in the response.
self.assertIn("I've been translated!", unicode(response.body))
- mock_translate.assert_any_call(
- u'Should be translated.', None)
class TestFaults(test.NoDBTestCase):
@@ -175,7 +177,7 @@ class TestFaults(test.NoDBTestCase):
def test_raise_localize_explanation(self):
msgid = "String with params: %s"
params = ('blah', )
- lazy_gettext = gettextutils._
+ lazy_gettext = i18n._
expl = lazy_gettext(msgid) % params
@webob.dec.wsgify
diff --git a/nova/tests/api/openstack/test_wsgi.py b/nova/tests/api/openstack/test_wsgi.py
index ebbbf06646..e4adbeeea2 100644
--- a/nova/tests/api/openstack/test_wsgi.py
+++ b/nova/tests/api/openstack/test_wsgi.py
@@ -17,7 +17,7 @@ import webob
from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova import exception
-from nova.openstack.common import gettextutils
+from nova import i18n
from nova import test
from nova.tests.api.openstack import fakes
from nova.tests import utils
@@ -132,7 +132,7 @@ class RequestTest(test.NoDBTestCase):
'id2': compute_nodes[2]})
def test_from_request(self):
- self.stubs.Set(gettextutils, 'get_available_languages',
+ self.stubs.Set(i18n, 'get_available_languages',
fakes.fake_get_available_languages)
request = wsgi.Request.blank('/')
@@ -143,7 +143,7 @@ class RequestTest(test.NoDBTestCase):
def test_asterisk(self):
# asterisk should match first available if there
# are not any other available matches
- self.stubs.Set(gettextutils, 'get_available_languages',
+ self.stubs.Set(i18n, 'get_available_languages',
fakes.fake_get_available_languages)
request = wsgi.Request.blank('/')
@@ -152,7 +152,7 @@ class RequestTest(test.NoDBTestCase):
self.assertEqual(request.best_match_language(), 'en_GB')
def test_prefix(self):
- self.stubs.Set(gettextutils, 'get_available_languages',
+ self.stubs.Set(i18n, 'get_available_languages',
fakes.fake_get_available_languages)
request = wsgi.Request.blank('/')
@@ -161,7 +161,7 @@ class RequestTest(test.NoDBTestCase):
self.assertEqual(request.best_match_language(), 'zh_CN')
def test_secondary(self):
- self.stubs.Set(gettextutils, 'get_available_languages',
+ self.stubs.Set(i18n, 'get_available_languages',
fakes.fake_get_available_languages)
request = wsgi.Request.blank('/')
@@ -170,7 +170,7 @@ class RequestTest(test.NoDBTestCase):
self.assertEqual(request.best_match_language(), 'en_GB')
def test_none_found(self):
- self.stubs.Set(gettextutils, 'get_available_languages',
+ self.stubs.Set(i18n, 'get_available_languages',
fakes.fake_get_available_languages)
request = wsgi.Request.blank('/')
@@ -179,7 +179,7 @@ class RequestTest(test.NoDBTestCase):
self.assertIs(request.best_match_language(), None)
def test_no_lang_header(self):
- self.stubs.Set(gettextutils, 'get_available_languages',
+ self.stubs.Set(i18n, 'get_available_languages',
fakes.fake_get_available_languages)
request = wsgi.Request.blank('/')
diff --git a/nova/tests/api/test_auth.py b/nova/tests/api/test_auth.py
index 8197909192..992ba48942 100644
--- a/nova/tests/api/test_auth.py
+++ b/nova/tests/api/test_auth.py
@@ -19,7 +19,7 @@ import webob
import webob.exc
import nova.api.auth
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common.middleware import request_id
from nova import test
diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py
index ce2c2d5c0f..eed33ea44d 100644
--- a/nova/tests/compute/test_compute.py
+++ b/nova/tests/compute/test_compute.py
@@ -51,6 +51,7 @@ from nova.conductor import manager as conductor_manager
from nova import context
from nova import db
from nova import exception
+from nova.i18n import _
from nova.image import glance
from nova.network import api as network_api
from nova.network import model as network_model
@@ -59,7 +60,6 @@ from nova import objects
from nova.objects import base as obj_base
from nova.objects import block_device as block_device_obj
from nova.objects import instance as instance_obj
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import importutils
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
diff --git a/nova/tests/compute/test_keypairs.py b/nova/tests/compute/test_keypairs.py
index 8b8f8c10b5..f2213af1f5 100644
--- a/nova/tests/compute/test_keypairs.py
+++ b/nova/tests/compute/test_keypairs.py
@@ -20,7 +20,7 @@ from nova.compute import api as compute_api
from nova import context
from nova import db
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova import quota
from nova.tests.compute import test_compute
from nova.tests import fake_notifier
diff --git a/nova/tests/db/test_migrations.py b/nova/tests/db/test_migrations.py
index aed05d7b4b..b2cf0f3a16 100644
--- a/nova/tests/db/test_migrations.py
+++ b/nova/tests/db/test_migrations.py
@@ -53,8 +53,8 @@ import sqlalchemy.exc
import nova.db.sqlalchemy.migrate_repo
from nova.db.sqlalchemy import utils as db_utils
+from nova.i18n import _
from nova.openstack.common.db.sqlalchemy import utils as oslodbutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import processutils
from nova import test
diff --git a/nova/tests/fake_ldap.py b/nova/tests/fake_ldap.py
index e3e6d77080..5e3a1cc7a3 100644
--- a/nova/tests/fake_ldap.py
+++ b/nova/tests/fake_ldap.py
@@ -23,7 +23,7 @@ library to work with nova.
import fnmatch
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import jsonutils
diff --git a/nova/tests/fake_volume.py b/nova/tests/fake_volume.py
index 5318e86f0b..e37da85c85 100644
--- a/nova/tests/fake_volume.py
+++ b/nova/tests/fake_volume.py
@@ -17,7 +17,7 @@ import uuid
from oslo.config import cfg
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
diff --git a/nova/tests/integrated/api/client.py b/nova/tests/integrated/api/client.py
index da80e5bd3b..0e80d98baf 100644
--- a/nova/tests/integrated/api/client.py
+++ b/nova/tests/integrated/api/client.py
@@ -17,7 +17,7 @@ import urllib
import six.moves.urllib.parse as urlparse
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova.tests.image import fake
diff --git a/nova/tests/integrated/api_samples_test_base.py b/nova/tests/integrated/api_samples_test_base.py
index 6a0f372460..8932adbee2 100644
--- a/nova/tests/integrated/api_samples_test_base.py
+++ b/nova/tests/integrated/api_samples_test_base.py
@@ -19,7 +19,7 @@ import re
from lxml import etree
import six
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import importutils
from nova.openstack.common import jsonutils
from nova import test
diff --git a/nova/tests/test_exception.py b/nova/tests/test_exception.py
index a7c75f8f6c..bf5264d2ca 100644
--- a/nova/tests/test_exception.py
+++ b/nova/tests/test_exception.py
@@ -18,7 +18,6 @@ import inspect
from nova import context
from nova import exception
-from nova.openstack.common import gettextutils
from nova import test
@@ -140,16 +139,6 @@ class NovaExceptionTestCase(test.NoDBTestCase):
exc = FakeNovaException_Remote(lame_arg='lame')
self.assertEqual(exc.format_message(), "some message %(somearg)s")
- def test_format_message_gettext_msg_returned(self):
- class FakeNovaException(exception.NovaException):
- msg_fmt = gettextutils.Message("Some message %(param)s",
- domain='nova')
-
- exc = FakeNovaException(param='blah')
- msg = exc.format_message()
- self.assertIsInstance(msg, gettextutils.Message)
- self.assertEqual(msg, "Some message blah")
-
class ExceptionTestCase(test.NoDBTestCase):
@staticmethod
diff --git a/nova/tests/test_nova_manage.py b/nova/tests/test_nova_manage.py
index 4877b135f3..50bb938d77 100644
--- a/nova/tests/test_nova_manage.py
+++ b/nova/tests/test_nova_manage.py
@@ -22,7 +22,7 @@ from nova.cmd import manage
from nova import context
from nova import db
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova import test
from nova.tests.db import fakes as db_fakes
from nova.tests.objects import test_network
diff --git a/nova/tests/virt/hyperv/test_hypervapi.py b/nova/tests/virt/hyperv/test_hypervapi.py
index 9b6cf1e15e..04542c9c7e 100644
--- a/nova/tests/virt/hyperv/test_hypervapi.py
+++ b/nova/tests/virt/hyperv/test_hypervapi.py
@@ -34,8 +34,8 @@ from nova.compute import task_states
from nova import context
from nova import db
from nova import exception
+from nova.i18n import _
from nova.image import glance
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import units
from nova import test
from nova.tests import fake_network
diff --git a/nova/tests/virt/libvirt/fakelibvirt.py b/nova/tests/virt/libvirt/fakelibvirt.py
index e3a3db978e..378e795848 100644
--- a/nova/tests/virt/libvirt/fakelibvirt.py
+++ b/nova/tests/virt/libvirt/fakelibvirt.py
@@ -17,7 +17,7 @@ from lxml import etree
import time
import uuid
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
# Allow passing None to the various connect methods
# (i.e. allow the client to rely on default URLs)
diff --git a/nova/tests/virt/vmwareapi/fake.py b/nova/tests/virt/vmwareapi/fake.py
index 5f46abb581..deb576b90f 100644
--- a/nova/tests/virt/vmwareapi/fake.py
+++ b/nova/tests/virt/vmwareapi/fake.py
@@ -23,7 +23,7 @@ import collections
import pprint
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova.openstack.common import units
diff --git a/nova/tests/virt/vmwareapi/test_ds_util.py b/nova/tests/virt/vmwareapi/test_ds_util.py
index 2b957e1c5f..0a78b62c0c 100644
--- a/nova/tests/virt/vmwareapi/test_ds_util.py
+++ b/nova/tests/virt/vmwareapi/test_ds_util.py
@@ -18,7 +18,7 @@ import re
import mock
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import units
from nova import test
from nova.tests.virt.vmwareapi import fake
diff --git a/nova/tests/virt/xenapi/image/test_bittorrent.py b/nova/tests/virt/xenapi/image/test_bittorrent.py
index e3a70c5a24..2ebb52f79f 100644
--- a/nova/tests/virt/xenapi/image/test_bittorrent.py
+++ b/nova/tests/virt/xenapi/image/test_bittorrent.py
@@ -17,7 +17,7 @@ import mox
import pkg_resources
from nova import context
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova import test
from nova.tests.virt.xenapi import stubs
from nova.virt.xenapi import driver as xenapi_conn
diff --git a/nova/tests/virt/xenapi/test_vm_utils.py b/nova/tests/virt/xenapi/test_vm_utils.py
index b302ebb82c..b8d1fca7de 100644
--- a/nova/tests/virt/xenapi/test_vm_utils.py
+++ b/nova/tests/virt/xenapi/test_vm_utils.py
@@ -27,7 +27,7 @@ from nova.compute import power_state
from nova.compute import vm_mode
from nova import context
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import processutils
from nova.openstack.common import timeutils
from nova.openstack.common import units
diff --git a/nova/utils.py b/nova/utils.py
index 887617941d..1ca10b8e1b 100644
--- a/nova/utils.py
+++ b/nova/utils.py
@@ -41,9 +41,8 @@ from oslo import messaging
import six
from nova import exception
+from nova.i18n import _
from nova.openstack.common import excutils
-from nova.openstack.common import gettextutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import importutils
from nova.openstack.common import lockutils
from nova.openstack.common import log as logging
@@ -444,8 +443,6 @@ def utf8(value):
"""
if isinstance(value, unicode):
return value.encode('utf-8')
- elif isinstance(value, gettextutils.Message):
- return unicode(value).encode('utf-8')
assert isinstance(value, str)
return value
diff --git a/nova/version.py b/nova/version.py
index 4d6faa1e08..7c2a71b39d 100644
--- a/nova/version.py
+++ b/nova/version.py
@@ -14,7 +14,7 @@
import pbr.version
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
NOVA_VENDOR = "OpenStack Foundation"
NOVA_PRODUCT = "OpenStack Nova"
diff --git a/nova/virt/baremetal/common.py b/nova/virt/baremetal/common.py
index de0f6d8e0c..94165007e6 100644
--- a/nova/virt/baremetal/common.py
+++ b/nova/virt/baremetal/common.py
@@ -15,7 +15,7 @@
import paramiko
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
LOG = logging.getLogger(__name__)
diff --git a/nova/virt/baremetal/db/sqlalchemy/api.py b/nova/virt/baremetal/db/sqlalchemy/api.py
index 35e70a4be8..6fd916b0ab 100644
--- a/nova/virt/baremetal/db/sqlalchemy/api.py
+++ b/nova/virt/baremetal/db/sqlalchemy/api.py
@@ -26,8 +26,8 @@ from sqlalchemy.sql.expression import literal_column
import nova.context
from nova.db.sqlalchemy import api as sqlalchemy_api
from nova import exception
+from nova.i18n import _
from nova.openstack.common.db import exception as db_exc
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import timeutils
from nova.openstack.common import uuidutils
from nova.virt.baremetal.db.sqlalchemy import models
diff --git a/nova/virt/baremetal/db/sqlalchemy/migration.py b/nova/virt/baremetal/db/sqlalchemy/migration.py
index 39212e668c..27beb89f16 100644
--- a/nova/virt/baremetal/db/sqlalchemy/migration.py
+++ b/nova/virt/baremetal/db/sqlalchemy/migration.py
@@ -22,7 +22,7 @@ from migrate.versioning.repository import Repository
import sqlalchemy
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.virt.baremetal.db.sqlalchemy import session
INIT_VERSION = 0
diff --git a/nova/virt/baremetal/driver.py b/nova/virt/baremetal/driver.py
index 705494145a..228267e300 100644
--- a/nova/virt/baremetal/driver.py
+++ b/nova/virt/baremetal/driver.py
@@ -27,8 +27,8 @@ from nova.compute import power_state
from nova.compute import task_states
from nova import context as nova_context
from nova import exception
+from nova.i18n import _
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import importutils
from nova.openstack.common import jsonutils
from nova.openstack.common import lockutils
diff --git a/nova/virt/baremetal/iboot_pdu.py b/nova/virt/baremetal/iboot_pdu.py
index f32fa1d03e..16d037b38c 100644
--- a/nova/virt/baremetal/iboot_pdu.py
+++ b/nova/virt/baremetal/iboot_pdu.py
@@ -16,7 +16,7 @@
# iBoot Power Driver
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import importutils
from nova.openstack.common import log as logging
from nova.virt.baremetal import baremetal_states
diff --git a/nova/virt/baremetal/ipmi.py b/nova/virt/baremetal/ipmi.py
index f13b0de8a9..473ad58dc0 100644
--- a/nova/virt/baremetal/ipmi.py
+++ b/nova/virt/baremetal/ipmi.py
@@ -27,7 +27,7 @@ import tempfile
from oslo.config import cfg
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.openstack.common import loopingcall
from nova import paths
diff --git a/nova/virt/baremetal/pxe.py b/nova/virt/baremetal/pxe.py
index f7c8ff644d..0d156f7ec9 100644
--- a/nova/virt/baremetal/pxe.py
+++ b/nova/virt/baremetal/pxe.py
@@ -26,10 +26,10 @@ from oslo.config import cfg
from nova.compute import flavors
from nova import exception
+from nova.i18n import _
from nova.objects import flavor as flavor_obj
from nova.openstack.common.db import exception as db_exc
from nova.openstack.common import fileutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import loopingcall
from nova.openstack.common import timeutils
diff --git a/nova/virt/baremetal/tilera.py b/nova/virt/baremetal/tilera.py
index 67c562598b..7588a97ece 100644
--- a/nova/virt/baremetal/tilera.py
+++ b/nova/virt/baremetal/tilera.py
@@ -25,9 +25,9 @@ from oslo.config import cfg
from nova.compute import flavors
from nova import exception
+from nova.i18n import _
from nova.openstack.common.db import exception as db_exc
from nova.openstack.common import fileutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova import utils
from nova.virt.baremetal import baremetal_states
diff --git a/nova/virt/baremetal/tilera_pdu.py b/nova/virt/baremetal/tilera_pdu.py
index 87d8435bf4..dc84c00518 100644
--- a/nova/virt/baremetal/tilera_pdu.py
+++ b/nova/virt/baremetal/tilera_pdu.py
@@ -24,7 +24,7 @@ import time
from oslo.config import cfg
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.openstack.common import processutils
from nova import utils
diff --git a/nova/virt/baremetal/utils.py b/nova/virt/baremetal/utils.py
index c54d3c14dd..0de4e27ae0 100644
--- a/nova/virt/baremetal/utils.py
+++ b/nova/virt/baremetal/utils.py
@@ -18,7 +18,7 @@ import errno
import os
import shutil
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.virt.disk import api as disk_api
from nova.virt.libvirt import utils as libvirt_utils
diff --git a/nova/virt/baremetal/vif_driver.py b/nova/virt/baremetal/vif_driver.py
index 04255d08a3..f71cd39835 100644
--- a/nova/virt/baremetal/vif_driver.py
+++ b/nova/virt/baremetal/vif_driver.py
@@ -17,7 +17,7 @@ from oslo.config import cfg
from nova import context
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.virt.baremetal import db as bmdb
diff --git a/nova/virt/baremetal/virtual_power_driver.py b/nova/virt/baremetal/virtual_power_driver.py
index 34e9e0e5bd..7ff6703409 100644
--- a/nova/virt/baremetal/virtual_power_driver.py
+++ b/nova/virt/baremetal/virtual_power_driver.py
@@ -19,7 +19,7 @@ from oslo.config import cfg
from nova import context as nova_context
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import importutils
from nova.openstack.common import log as logging
from nova.openstack.common import processutils
diff --git a/nova/virt/baremetal/volume_driver.py b/nova/virt/baremetal/volume_driver.py
index 3cbe878770..f07e988e70 100644
--- a/nova/virt/baremetal/volume_driver.py
+++ b/nova/virt/baremetal/volume_driver.py
@@ -21,8 +21,8 @@ from oslo.config import cfg
from nova import context as nova_context
from nova import exception
+from nova.i18n import _
from nova import network
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import importutils
from nova.openstack.common import log as logging
from nova.openstack.common import processutils
diff --git a/nova/virt/block_device.py b/nova/virt/block_device.py
index 67b3064021..02e10be96a 100644
--- a/nova/virt/block_device.py
+++ b/nova/virt/block_device.py
@@ -16,10 +16,10 @@ import functools
import operator
from nova import block_device
+from nova.i18n import _
from nova import objects
from nova.objects import base as obj_base
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova.volume import encryptors
diff --git a/nova/virt/disk/api.py b/nova/virt/disk/api.py
index cdc103443a..9a067b9897 100644
--- a/nova/virt/disk/api.py
+++ b/nova/virt/disk/api.py
@@ -33,7 +33,7 @@ if os.name != 'nt':
from oslo.config import cfg
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova.openstack.common import processutils
diff --git a/nova/virt/disk/mount/api.py b/nova/virt/disk/mount/api.py
index 37c50b5450..066842b18e 100644
--- a/nova/virt/disk/mount/api.py
+++ b/nova/virt/disk/mount/api.py
@@ -16,7 +16,7 @@
import os
import time
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import importutils
from nova.openstack.common import log as logging
from nova import utils
diff --git a/nova/virt/disk/mount/loop.py b/nova/virt/disk/mount/loop.py
index 7a0321a153..d0a157e742 100644
--- a/nova/virt/disk/mount/loop.py
+++ b/nova/virt/disk/mount/loop.py
@@ -13,7 +13,7 @@
# under the License.
"""Support for mounting images with the loop device."""
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova import utils
from nova.virt.disk.mount import api
diff --git a/nova/virt/disk/mount/nbd.py b/nova/virt/disk/mount/nbd.py
index 7b2d0add94..80ab966058 100644
--- a/nova/virt/disk/mount/nbd.py
+++ b/nova/virt/disk/mount/nbd.py
@@ -20,7 +20,7 @@ import time
from oslo.config import cfg
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova import utils
from nova.virt.disk.mount import api
diff --git a/nova/virt/disk/vfs/guestfs.py b/nova/virt/disk/vfs/guestfs.py
index c99dce829e..95e611561a 100644
--- a/nova/virt/disk/vfs/guestfs.py
+++ b/nova/virt/disk/vfs/guestfs.py
@@ -15,7 +15,7 @@
from eventlet import tpool
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.virt.disk.vfs import api as vfs
diff --git a/nova/virt/disk/vfs/localfs.py b/nova/virt/disk/vfs/localfs.py
index 314295c80a..242db7639e 100644
--- a/nova/virt/disk/vfs/localfs.py
+++ b/nova/virt/disk/vfs/localfs.py
@@ -16,8 +16,8 @@ import os
import tempfile
from nova import exception
+from nova.i18n import _
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova import utils
from nova.virt.disk.mount import loop
diff --git a/nova/virt/driver.py b/nova/virt/driver.py
index 95459d1eba..f12a439678 100644
--- a/nova/virt/driver.py
+++ b/nova/virt/driver.py
@@ -24,7 +24,7 @@ import sys
from oslo.config import cfg
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import importutils
from nova.openstack.common import log as logging
from nova import utils
diff --git a/nova/virt/event.py b/nova/virt/event.py
index 51db4cd1b9..02b9cddbd5 100644
--- a/nova/virt/event.py
+++ b/nova/virt/event.py
@@ -22,7 +22,7 @@ driver.
import time
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
EVENT_LIFECYCLE_STARTED = 0
EVENT_LIFECYCLE_STOPPED = 1
diff --git a/nova/virt/fake.py b/nova/virt/fake.py
index 21d74633b6..eba5b5164b 100644
--- a/nova/virt/fake.py
+++ b/nova/virt/fake.py
@@ -31,7 +31,7 @@ from nova.compute import power_state
from nova.compute import task_states
from nova import db
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova import utils
diff --git a/nova/virt/firewall.py b/nova/virt/firewall.py
index cd3c75b66c..ed3ff026af 100644
--- a/nova/virt/firewall.py
+++ b/nova/virt/firewall.py
@@ -19,12 +19,12 @@ from oslo.config import cfg
from nova.compute import utils as compute_utils
from nova import context
+from nova.i18n import _
+from nova.i18n import _LI
from nova.network import linux_net
from nova import objects
from nova.objects import security_group as security_group_obj
from nova.objects import security_group_rule as security_group_rule_obj
-from nova.openstack.common.gettextutils import _
-from nova.openstack.common.gettextutils import _LI
from nova.openstack.common import importutils
from nova.openstack.common import log as logging
from nova import utils
diff --git a/nova/virt/hardware.py b/nova/virt/hardware.py
index 2e5a1deca2..5670fd5bd1 100644
--- a/nova/virt/hardware.py
+++ b/nova/virt/hardware.py
@@ -17,7 +17,7 @@ import collections
from oslo.config import cfg
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
virt_cpu_opts = [
diff --git a/nova/virt/hyperv/basevolumeutils.py b/nova/virt/hyperv/basevolumeutils.py
index 359417e500..404d8536c6 100644
--- a/nova/virt/hyperv/basevolumeutils.py
+++ b/nova/virt/hyperv/basevolumeutils.py
@@ -28,7 +28,7 @@ if sys.platform == 'win32':
import wmi
from nova import block_device
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.virt import driver
diff --git a/nova/virt/hyperv/driver.py b/nova/virt/hyperv/driver.py
index daea18b959..dc0f2fa889 100644
--- a/nova/virt/hyperv/driver.py
+++ b/nova/virt/hyperv/driver.py
@@ -17,7 +17,7 @@
A Hyper-V Nova Compute driver.
"""
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.virt import driver
from nova.virt.hyperv import hostops
diff --git a/nova/virt/hyperv/imagecache.py b/nova/virt/hyperv/imagecache.py
index c4b86e2b6c..88eacb14fd 100644
--- a/nova/virt/hyperv/imagecache.py
+++ b/nova/virt/hyperv/imagecache.py
@@ -20,8 +20,8 @@ import os
from oslo.config import cfg
from nova.compute import flavors
+from nova.i18n import _
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import units
from nova import utils
diff --git a/nova/virt/hyperv/livemigrationops.py b/nova/virt/hyperv/livemigrationops.py
index d8bc81e7f1..5411967498 100644
--- a/nova/virt/hyperv/livemigrationops.py
+++ b/nova/virt/hyperv/livemigrationops.py
@@ -20,8 +20,8 @@ import functools
from oslo.config import cfg
+from nova.i18n import _
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.virt.hyperv import imagecache
from nova.virt.hyperv import utilsfactory
diff --git a/nova/virt/hyperv/livemigrationutils.py b/nova/virt/hyperv/livemigrationutils.py
index 219b4e10ca..579965897e 100644
--- a/nova/virt/hyperv/livemigrationutils.py
+++ b/nova/virt/hyperv/livemigrationutils.py
@@ -19,7 +19,7 @@ if sys.platform == 'win32':
import wmi
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.virt.hyperv import vmutils
from nova.virt.hyperv import vmutilsv2
diff --git a/nova/virt/hyperv/migrationops.py b/nova/virt/hyperv/migrationops.py
index e883fba1e6..31e3c101cc 100644
--- a/nova/virt/hyperv/migrationops.py
+++ b/nova/virt/hyperv/migrationops.py
@@ -18,8 +18,8 @@ Management class for migration / resize operations.
"""
import os
+from nova.i18n import _
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import units
from nova.virt.hyperv import imagecache
diff --git a/nova/virt/hyperv/networkutils.py b/nova/virt/hyperv/networkutils.py
index 2b45343b8a..27571485cd 100644
--- a/nova/virt/hyperv/networkutils.py
+++ b/nova/virt/hyperv/networkutils.py
@@ -23,7 +23,7 @@ import uuid
if sys.platform == 'win32':
import wmi
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.virt.hyperv import vmutils
diff --git a/nova/virt/hyperv/networkutilsv2.py b/nova/virt/hyperv/networkutilsv2.py
index c3ec6a3497..558f7c44cd 100644
--- a/nova/virt/hyperv/networkutilsv2.py
+++ b/nova/virt/hyperv/networkutilsv2.py
@@ -24,7 +24,7 @@ import sys
if sys.platform == 'win32':
import wmi
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.virt.hyperv import networkutils
from nova.virt.hyperv import vmutils
diff --git a/nova/virt/hyperv/pathutils.py b/nova/virt/hyperv/pathutils.py
index 853281899d..02937689c6 100644
--- a/nova/virt/hyperv/pathutils.py
+++ b/nova/virt/hyperv/pathutils.py
@@ -18,7 +18,7 @@ import shutil
from oslo.config import cfg
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova import utils
diff --git a/nova/virt/hyperv/snapshotops.py b/nova/virt/hyperv/snapshotops.py
index a103557579..0c604b46fc 100644
--- a/nova/virt/hyperv/snapshotops.py
+++ b/nova/virt/hyperv/snapshotops.py
@@ -21,8 +21,8 @@ import os
from oslo.config import cfg
from nova.compute import task_states
+from nova.i18n import _
from nova.image import glance
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.virt.hyperv import utilsfactory
diff --git a/nova/virt/hyperv/vhdutils.py b/nova/virt/hyperv/vhdutils.py
index a7c6502720..801533ba80 100644
--- a/nova/virt/hyperv/vhdutils.py
+++ b/nova/virt/hyperv/vhdutils.py
@@ -31,7 +31,7 @@ if sys.platform == 'win32':
from xml.etree import ElementTree
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.virt.hyperv import constants
from nova.virt.hyperv import vmutils
diff --git a/nova/virt/hyperv/vhdutilsv2.py b/nova/virt/hyperv/vhdutilsv2.py
index 44a0f7663f..8d865aac24 100644
--- a/nova/virt/hyperv/vhdutilsv2.py
+++ b/nova/virt/hyperv/vhdutilsv2.py
@@ -26,7 +26,7 @@ if sys.platform == 'win32':
from xml.etree import ElementTree
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import units
from nova.virt.hyperv import constants
from nova.virt.hyperv import vhdutils
diff --git a/nova/virt/hyperv/vmops.py b/nova/virt/hyperv/vmops.py
index ca5286d9f9..177696d6cb 100644
--- a/nova/virt/hyperv/vmops.py
+++ b/nova/virt/hyperv/vmops.py
@@ -24,8 +24,8 @@ from oslo.config import cfg
from nova.api.metadata import base as instance_metadata
from nova import exception
+from nova.i18n import _
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import importutils
from nova.openstack.common import log as logging
from nova.openstack.common import processutils
diff --git a/nova/virt/hyperv/vmutils.py b/nova/virt/hyperv/vmutils.py
index e036ba89ff..1b71248d4e 100644
--- a/nova/virt/hyperv/vmutils.py
+++ b/nova/virt/hyperv/vmutils.py
@@ -28,7 +28,7 @@ if sys.platform == 'win32':
from oslo.config import cfg
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.virt.hyperv import constants
diff --git a/nova/virt/hyperv/volumeops.py b/nova/virt/hyperv/volumeops.py
index 7b3b0598fb..1e9df559e2 100644
--- a/nova/virt/hyperv/volumeops.py
+++ b/nova/virt/hyperv/volumeops.py
@@ -22,8 +22,8 @@ import time
from oslo.config import cfg
from nova import exception
+from nova.i18n import _
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.virt import driver
from nova.virt.hyperv import utilsfactory
diff --git a/nova/virt/hyperv/volumeutils.py b/nova/virt/hyperv/volumeutils.py
index 2740da2911..ccd890daef 100644
--- a/nova/virt/hyperv/volumeutils.py
+++ b/nova/virt/hyperv/volumeutils.py
@@ -28,7 +28,7 @@ import time
from oslo.config import cfg
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova import utils
from nova.virt.hyperv import basevolumeutils
diff --git a/nova/virt/hyperv/volumeutilsv2.py b/nova/virt/hyperv/volumeutilsv2.py
index be97b1a4ab..ae2a7f6b2e 100644
--- a/nova/virt/hyperv/volumeutilsv2.py
+++ b/nova/virt/hyperv/volumeutilsv2.py
@@ -26,7 +26,7 @@ if sys.platform == 'win32':
from oslo.config import cfg
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova import utils
from nova.virt.hyperv import basevolumeutils
diff --git a/nova/virt/images.py b/nova/virt/images.py
index 23b2a52426..fc6cd8423c 100644
--- a/nova/virt/images.py
+++ b/nova/virt/images.py
@@ -24,9 +24,9 @@ import os
from oslo.config import cfg
from nova import exception
+from nova.i18n import _
from nova import image
from nova.openstack.common import fileutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import imageutils
from nova.openstack.common import log as logging
from nova import utils
diff --git a/nova/virt/libvirt/blockinfo.py b/nova/virt/libvirt/blockinfo.py
index 746bc6908f..27800eceed 100644
--- a/nova/virt/libvirt/blockinfo.py
+++ b/nova/virt/libvirt/blockinfo.py
@@ -77,8 +77,8 @@ from oslo.config import cfg
from nova import block_device
from nova.compute import flavors
from nova import exception
+from nova.i18n import _
from nova.objects import base as obj_base
-from nova.openstack.common.gettextutils import _
from nova.virt import block_device as driver_block_device
from nova.virt import configdrive
from nova.virt import driver
diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py
index 914ea95f7b..053b267acd 100644
--- a/nova/virt/libvirt/driver.py
+++ b/nova/virt/libvirt/driver.py
@@ -56,16 +56,16 @@ from nova.compute import utils as compute_utils
from nova.compute import vm_mode
from nova import context as nova_context
from nova import exception
+from nova.i18n import _
+from nova.i18n import _LE
+from nova.i18n import _LI
+from nova.i18n import _LW
from nova import image
from nova import objects
from nova.objects import flavor as flavor_obj
from nova.objects import service as service_obj
from nova.openstack.common import excutils
from nova.openstack.common import fileutils
-from nova.openstack.common.gettextutils import _
-from nova.openstack.common.gettextutils import _LE
-from nova.openstack.common.gettextutils import _LI
-from nova.openstack.common.gettextutils import _LW
from nova.openstack.common import importutils
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
diff --git a/nova/virt/libvirt/firewall.py b/nova/virt/libvirt/firewall.py
index f36e7946ff..f935c7163e 100644
--- a/nova/virt/libvirt/firewall.py
+++ b/nova/virt/libvirt/firewall.py
@@ -18,8 +18,8 @@
from oslo.config import cfg
from nova.cloudpipe import pipelib
-from nova.openstack.common.gettextutils import _LI
-from nova.openstack.common.gettextutils import _LW
+from nova.i18n import _LI
+from nova.i18n import _LW
from nova.openstack.common import log as logging
import nova.virt.firewall as base_firewall
from nova.virt import netutils
diff --git a/nova/virt/libvirt/imagebackend.py b/nova/virt/libvirt/imagebackend.py
index 4d73d536d1..4caf9e0001 100644
--- a/nova/virt/libvirt/imagebackend.py
+++ b/nova/virt/libvirt/imagebackend.py
@@ -21,10 +21,10 @@ from oslo.config import cfg
import six
from nova import exception
+from nova.i18n import _
+from nova.i18n import _LE
from nova.openstack.common import excutils
from nova.openstack.common import fileutils
-from nova.openstack.common.gettextutils import _
-from nova.openstack.common.gettextutils import _LE
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova.openstack.common import units
diff --git a/nova/virt/libvirt/imagecache.py b/nova/virt/libvirt/imagecache.py
index 0542b431a4..7a3282f1ef 100644
--- a/nova/virt/libvirt/imagecache.py
+++ b/nova/virt/libvirt/imagecache.py
@@ -28,10 +28,10 @@ import time
from oslo.config import cfg
+from nova.i18n import _LE
+from nova.i18n import _LI
+from nova.i18n import _LW
from nova.openstack.common import fileutils
-from nova.openstack.common.gettextutils import _LE
-from nova.openstack.common.gettextutils import _LI
-from nova.openstack.common.gettextutils import _LW
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova.openstack.common import processutils
diff --git a/nova/virt/libvirt/lvm.py b/nova/virt/libvirt/lvm.py
index 0671a5086b..1ef455eb83 100644
--- a/nova/virt/libvirt/lvm.py
+++ b/nova/virt/libvirt/lvm.py
@@ -22,9 +22,9 @@
from oslo.config import cfg
from nova import exception
-from nova.openstack.common.gettextutils import _
-from nova.openstack.common.gettextutils import _LE
-from nova.openstack.common.gettextutils import _LW
+from nova.i18n import _
+from nova.i18n import _LE
+from nova.i18n import _LW
from nova.openstack.common import log as logging
from nova.openstack.common import processutils
from nova.openstack.common import units
diff --git a/nova/virt/libvirt/utils.py b/nova/virt/libvirt/utils.py
index 54ac1d3283..af0cd40f97 100644
--- a/nova/virt/libvirt/utils.py
+++ b/nova/virt/libvirt/utils.py
@@ -25,9 +25,9 @@ import platform
from lxml import etree
from oslo.config import cfg
-from nova.openstack.common.gettextutils import _
-from nova.openstack.common.gettextutils import _LI
-from nova.openstack.common.gettextutils import _LW
+from nova.i18n import _
+from nova.i18n import _LI
+from nova.i18n import _LW
from nova.openstack.common import log as logging
from nova.openstack.common import processutils
from nova import utils
diff --git a/nova/virt/libvirt/vif.py b/nova/virt/libvirt/vif.py
index 2532e786ca..1da2b35d3f 100644
--- a/nova/virt/libvirt/vif.py
+++ b/nova/virt/libvirt/vif.py
@@ -22,11 +22,11 @@ import copy
from oslo.config import cfg
from nova import exception
+from nova.i18n import _
+from nova.i18n import _LE
+from nova.i18n import _LW
from nova.network import linux_net
from nova.network import model as network_model
-from nova.openstack.common.gettextutils import _
-from nova.openstack.common.gettextutils import _LE
-from nova.openstack.common.gettextutils import _LW
from nova.openstack.common import log as logging
from nova.openstack.common import processutils
from nova import utils
diff --git a/nova/virt/libvirt/volume.py b/nova/virt/libvirt/volume.py
index 1f4f85cb03..cb5c6d9746 100644
--- a/nova/virt/libvirt/volume.py
+++ b/nova/virt/libvirt/volume.py
@@ -26,9 +26,9 @@ import six
import six.moves.urllib.parse as urlparse
from nova import exception
-from nova.openstack.common.gettextutils import _
-from nova.openstack.common.gettextutils import _LE
-from nova.openstack.common.gettextutils import _LW
+from nova.i18n import _
+from nova.i18n import _LE
+from nova.i18n import _LW
from nova.openstack.common import log as logging
from nova.openstack.common import loopingcall
from nova.openstack.common import processutils
diff --git a/nova/virt/storage_users.py b/nova/virt/storage_users.py
index 752f07efc0..58e7f58498 100644
--- a/nova/virt/storage_users.py
+++ b/nova/virt/storage_users.py
@@ -19,7 +19,7 @@ import time
from oslo.config import cfg
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova import utils
diff --git a/nova/virt/vmwareapi/driver.py b/nova/virt/vmwareapi/driver.py
index 313ef5f87c..da690f53a7 100644
--- a/nova/virt/vmwareapi/driver.py
+++ b/nova/virt/vmwareapi/driver.py
@@ -28,8 +28,7 @@ from oslo.config import cfg
import suds
from nova import exception
-from nova.openstack.common.gettextutils import _
-from nova.openstack.common.gettextutils import _LC
+from nova.i18n import _, _LC
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova.openstack.common import loopingcall
diff --git a/nova/virt/vmwareapi/ds_util.py b/nova/virt/vmwareapi/ds_util.py
index cc76b9a700..a91e732c55 100644
--- a/nova/virt/vmwareapi/ds_util.py
+++ b/nova/virt/vmwareapi/ds_util.py
@@ -18,7 +18,7 @@ Datastore utility functions
import posixpath
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.virt.vmwareapi import error_util
from nova.virt.vmwareapi import vim_util
diff --git a/nova/virt/vmwareapi/error_util.py b/nova/virt/vmwareapi/error_util.py
index ba01c931d3..89ce19df16 100644
--- a/nova/virt/vmwareapi/error_util.py
+++ b/nova/virt/vmwareapi/error_util.py
@@ -17,7 +17,7 @@
Exception classes and SOAP response error checking module.
"""
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
LOG = logging.getLogger(__name__)
diff --git a/nova/virt/vmwareapi/imagecache.py b/nova/virt/vmwareapi/imagecache.py
index 617c78833b..11d300e13b 100644
--- a/nova/virt/vmwareapi/imagecache.py
+++ b/nova/virt/vmwareapi/imagecache.py
@@ -37,7 +37,7 @@ This will ensure that a image is not deleted during the spawn.
from oslo.config import cfg
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import lockutils
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
diff --git a/nova/virt/vmwareapi/io_util.py b/nova/virt/vmwareapi/io_util.py
index 5c79df8772..10132dfee0 100644
--- a/nova/virt/vmwareapi/io_util.py
+++ b/nova/virt/vmwareapi/io_util.py
@@ -24,8 +24,8 @@ from eventlet import greenthread
from eventlet import queue
from nova import exception
+from nova.i18n import _
from nova import image
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
LOG = logging.getLogger(__name__)
diff --git a/nova/virt/vmwareapi/network_util.py b/nova/virt/vmwareapi/network_util.py
index 565c45db4c..20d9596ae6 100644
--- a/nova/virt/vmwareapi/network_util.py
+++ b/nova/virt/vmwareapi/network_util.py
@@ -19,7 +19,7 @@ Utility functions for ESX Networking.
"""
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.virt.vmwareapi import error_util
from nova.virt.vmwareapi import vim_util
diff --git a/nova/virt/vmwareapi/vif.py b/nova/virt/vmwareapi/vif.py
index f611ccf20a..2c50b4a694 100644
--- a/nova/virt/vmwareapi/vif.py
+++ b/nova/virt/vmwareapi/vif.py
@@ -18,7 +18,7 @@
from oslo.config import cfg
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.virt.vmwareapi import error_util
from nova.virt.vmwareapi import network_util
diff --git a/nova/virt/vmwareapi/vim.py b/nova/virt/vmwareapi/vim.py
index f8eb76f203..d4aa456c2b 100644
--- a/nova/virt/vmwareapi/vim.py
+++ b/nova/virt/vmwareapi/vim.py
@@ -24,7 +24,7 @@ import urllib2
from oslo.config import cfg
import suds
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova import utils
from nova.virt.vmwareapi import error_util
diff --git a/nova/virt/vmwareapi/vim_util.py b/nova/virt/vmwareapi/vim_util.py
index 313d35ffc7..e37c6cddf7 100644
--- a/nova/virt/vmwareapi/vim_util.py
+++ b/nova/virt/vmwareapi/vim_util.py
@@ -19,7 +19,7 @@ The VMware API utility module.
from oslo.config import cfg
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
vmware_opts = cfg.IntOpt('maximum_objects', default=100,
diff --git a/nova/virt/vmwareapi/vm_util.py b/nova/virt/vmwareapi/vm_util.py
index f6e3e7adf2..7a60242b23 100644
--- a/nova/virt/vmwareapi/vm_util.py
+++ b/nova/virt/vmwareapi/vm_util.py
@@ -24,8 +24,8 @@ import functools
from oslo.config import cfg
from nova import exception
+from nova.i18n import _
from nova.network import model as network_model
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import units
from nova import utils
diff --git a/nova/virt/vmwareapi/vmops.py b/nova/virt/vmwareapi/vmops.py
index 9d7093c7a4..2c5b34523a 100644
--- a/nova/virt/vmwareapi/vmops.py
+++ b/nova/virt/vmwareapi/vmops.py
@@ -32,8 +32,8 @@ from nova.compute import task_states
from nova.compute import vm_states
from nova import context as nova_context
from nova import exception
+from nova.i18n import _, _LE
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _, _LE
from nova.openstack.common import lockutils
from nova.openstack.common import log as logging
from nova.openstack.common import strutils
diff --git a/nova/virt/vmwareapi/volumeops.py b/nova/virt/vmwareapi/volumeops.py
index c332402d82..6a5e1c5790 100644
--- a/nova/virt/vmwareapi/volumeops.py
+++ b/nova/virt/vmwareapi/volumeops.py
@@ -20,7 +20,7 @@ Management class for Storage-related functions (attach, detach, etc).
from oslo.config import cfg
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.virt.vmwareapi import vim
from nova.virt.vmwareapi import vim_util
diff --git a/nova/virt/xenapi/agent.py b/nova/virt/xenapi/agent.py
index df47d29810..00d9e27389 100644
--- a/nova/virt/xenapi/agent.py
+++ b/nova/virt/xenapi/agent.py
@@ -28,8 +28,8 @@ from nova.compute import utils as compute_utils
from nova import context
from nova import crypto
from nova import exception
+from nova.i18n import _
from nova import objects
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova.openstack.common import strutils
diff --git a/nova/virt/xenapi/client/session.py b/nova/virt/xenapi/client/session.py
index 139e1c184c..1dc5b4446e 100644
--- a/nova/virt/xenapi/client/session.py
+++ b/nova/virt/xenapi/client/session.py
@@ -25,8 +25,8 @@ from oslo.config import cfg
from nova import context
from nova import exception
+from nova.i18n import _
from nova import objects
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import versionutils
from nova import utils
diff --git a/nova/virt/xenapi/driver.py b/nova/virt/xenapi/driver.py
index 77c962ddde..9afab4d1a1 100644
--- a/nova/virt/xenapi/driver.py
+++ b/nova/virt/xenapi/driver.py
@@ -40,7 +40,7 @@ import math
from oslo.config import cfg
import six.moves.urllib.parse as urlparse
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova.openstack.common import units
diff --git a/nova/virt/xenapi/fake.py b/nova/virt/xenapi/fake.py
index eabe139aec..0c8e693595 100644
--- a/nova/virt/xenapi/fake.py
+++ b/nova/virt/xenapi/fake.py
@@ -57,7 +57,7 @@ from xml.sax import saxutils
import zlib
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
diff --git a/nova/virt/xenapi/host.py b/nova/virt/xenapi/host.py
index afa484a80c..c842df8a7b 100644
--- a/nova/virt/xenapi/host.py
+++ b/nova/virt/xenapi/host.py
@@ -25,9 +25,9 @@ from nova.compute import task_states
from nova.compute import vm_states
from nova import context
from nova import exception
+from nova.i18n import _
from nova import objects
from nova.objects import service as service_obj
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova.pci import pci_whitelist
diff --git a/nova/virt/xenapi/image/bittorrent.py b/nova/virt/xenapi/image/bittorrent.py
index a77775d113..d400feef5b 100644
--- a/nova/virt/xenapi/image/bittorrent.py
+++ b/nova/virt/xenapi/image/bittorrent.py
@@ -17,7 +17,7 @@ from oslo.config import cfg
import pkg_resources
import six.moves.urllib.parse as urlparse
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
import nova.openstack.common.log as logging
from nova.virt.xenapi import vm_utils
diff --git a/nova/virt/xenapi/network_utils.py b/nova/virt/xenapi/network_utils.py
index cfa983fbcb..d838f69886 100644
--- a/nova/virt/xenapi/network_utils.py
+++ b/nova/virt/xenapi/network_utils.py
@@ -19,7 +19,7 @@ their lookup functions.
"""
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
def find_network_with_name_label(session, name_label):
diff --git a/nova/virt/xenapi/pool.py b/nova/virt/xenapi/pool.py
index 9867dbad72..f8d2e4f927 100644
--- a/nova/virt/xenapi/pool.py
+++ b/nova/virt/xenapi/pool.py
@@ -22,7 +22,7 @@ import six.moves.urllib.parse as urlparse
from nova.compute import rpcapi as compute_rpcapi
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova.virt.xenapi import pool_states
diff --git a/nova/virt/xenapi/vif.py b/nova/virt/xenapi/vif.py
index a763718d3c..74408cb3c3 100644
--- a/nova/virt/xenapi/vif.py
+++ b/nova/virt/xenapi/vif.py
@@ -19,7 +19,7 @@
from oslo.config import cfg
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.virt.xenapi import network_utils
from nova.virt.xenapi import vm_utils
diff --git a/nova/virt/xenapi/vm_utils.py b/nova/virt/xenapi/vm_utils.py
index a655b1dc8c..e810b4a846 100644
--- a/nova/virt/xenapi/vm_utils.py
+++ b/nova/virt/xenapi/vm_utils.py
@@ -37,9 +37,9 @@ from nova.compute import power_state
from nova.compute import task_states
from nova.compute import vm_mode
from nova import exception
+from nova.i18n import _, _LI
from nova.network import model as network_model
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _, _LI
from nova.openstack.common import importutils
from nova.openstack.common import log as logging
from nova.openstack.common import processutils
diff --git a/nova/virt/xenapi/vmops.py b/nova/virt/xenapi/vmops.py
index c7db7ea992..4338b520e2 100644
--- a/nova/virt/xenapi/vmops.py
+++ b/nova/virt/xenapi/vmops.py
@@ -35,9 +35,9 @@ from nova.compute import vm_mode
from nova.compute import vm_states
from nova import context as nova_context
from nova import exception
+from nova.i18n import _
from nova import objects
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import importutils
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
diff --git a/nova/virt/xenapi/volume_utils.py b/nova/virt/xenapi/volume_utils.py
index d1a01d58f2..96b261a178 100644
--- a/nova/virt/xenapi/volume_utils.py
+++ b/nova/virt/xenapi/volume_utils.py
@@ -25,7 +25,7 @@ from eventlet import greenthread
from oslo.config import cfg
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
xenapi_volume_utils_opts = [
diff --git a/nova/virt/xenapi/volumeops.py b/nova/virt/xenapi/volumeops.py
index 5eb28165af..70adbbb683 100644
--- a/nova/virt/xenapi/volumeops.py
+++ b/nova/virt/xenapi/volumeops.py
@@ -18,8 +18,8 @@ Management class for Storage-related functions (attach, detach, etc).
"""
from nova import exception
+from nova.i18n import _
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.virt.xenapi import vm_utils
from nova.virt.xenapi import volume_utils
diff --git a/nova/vnc/xvp_proxy.py b/nova/vnc/xvp_proxy.py
index 5ab95c63a0..038d2c4675 100644
--- a/nova/vnc/xvp_proxy.py
+++ b/nova/vnc/xvp_proxy.py
@@ -27,7 +27,7 @@ import webob
from nova.consoleauth import rpcapi as consoleauth_rpcapi
from nova import context
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova import version
from nova import wsgi
diff --git a/nova/volume/cinder.py b/nova/volume/cinder.py
index 2ba00aa811..87ad68f57d 100644
--- a/nova/volume/cinder.py
+++ b/nova/volume/cinder.py
@@ -28,7 +28,7 @@ from oslo.config import cfg
from nova import availability_zones as az
from nova import exception
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import log as logging
from nova.openstack.common import strutils
diff --git a/nova/volume/encryptors/__init__.py b/nova/volume/encryptors/__init__.py
index 79879d2a23..8c87a9e768 100644
--- a/nova/volume/encryptors/__init__.py
+++ b/nova/volume/encryptors/__init__.py
@@ -14,7 +14,7 @@
# under the License.
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
from nova.openstack.common import importutils
from nova.openstack.common import log as logging
from nova.volume.encryptors import nop
diff --git a/nova/wsgi.py b/nova/wsgi.py
index f538bcd771..4f9a95bd9c 100644
--- a/nova/wsgi.py
+++ b/nova/wsgi.py
@@ -34,8 +34,8 @@ import webob.dec
import webob.exc
from nova import exception
+from nova.i18n import _
from nova.openstack.common import excutils
-from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
wsgi_opts = [
diff --git a/requirements.txt b/requirements.txt
index 6949d82614..2d9ab4cab1 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -34,3 +34,4 @@ oslo.config>=1.2.1
oslo.rootwrap
pycadf>=0.5.1
oslo.messaging>=1.3.0
+oslo.i18n>=0.1.0
diff --git a/tools/db/schema_diff.py b/tools/db/schema_diff.py
index 9e88f4f22c..9e441f4834 100755
--- a/tools/db/schema_diff.py
+++ b/tools/db/schema_diff.py
@@ -49,7 +49,7 @@ import os
import subprocess
import sys
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
### Dump
diff --git a/tools/esx/guest_tool.py b/tools/esx/guest_tool.py
index 4c830b05d4..c472d6cbb1 100644
--- a/tools/esx/guest_tool.py
+++ b/tools/esx/guest_tool.py
@@ -28,7 +28,7 @@ import subprocess
import sys
import time
-from nova.openstack.common.gettextutils import _
+from nova.i18n import _
PLATFORM_WIN = 'win32'
diff --git a/tox.ini b/tox.ini
index daeebd56d2..61e16ea0b0 100644
--- a/tox.ini
+++ b/tox.ini
@@ -66,4 +66,4 @@ exclude = .venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build,t
[hacking]
local-check-factory = nova.hacking.checks.factory
-import_exceptions = nova.openstack.common.gettextutils
+import_exceptions = nova.i18n