diff --git a/novaclient/auth_plugin.py b/novaclient/auth_plugin.py index 843489788..1c7227fdc 100644 --- a/novaclient/auth_plugin.py +++ b/novaclient/auth_plugin.py @@ -15,11 +15,12 @@ # under the License. import logging -import pkg_resources +import pkg_resources import six from novaclient import exceptions +from novaclient.openstack.common.gettextutils import _ from novaclient import utils @@ -39,7 +40,7 @@ def discover_auth_systems(): try: auth_plugin = ep.load() except (ImportError, pkg_resources.UnknownExtra, AttributeError) as e: - logger.debug("ERROR: Cannot load auth plugin %s" % ep.name) + logger.debug(_("ERROR: Cannot load auth plugin %s") % ep.name) logger.debug(e, exc_info=1) else: _discovered_plugins[ep.name] = auth_plugin diff --git a/novaclient/client.py b/novaclient/client.py index d89331322..105d8075e 100644 --- a/novaclient/client.py +++ b/novaclient/client.py @@ -31,6 +31,7 @@ except ImportError: import simplejson as json from novaclient import exceptions +from novaclient.openstack.common.gettextutils import _ from novaclient.openstack.common.py3kcompat import urlutils from novaclient import service_catalog from novaclient import utils @@ -160,11 +161,10 @@ class HTTPClient(object): def http_log_resp(self, resp): if not self.http_log_debug: return - self._logger.debug( - "RESP: [%s] %s\nRESP BODY: %s\n", - resp.status_code, - resp.headers, - resp.text) + self._logger.debug(_("RESP: [%(status)s] %(headers)s\nRESP BODY: " + "%(text)s\n"), {'status': resp.status_code, + 'headers': resp.headers, + 'text': resp.text}) def request(self, url, method, **kwargs): kwargs.setdefault('headers', kwargs.get('headers', {})) @@ -288,13 +288,14 @@ class HTTPClient(object): self.management_url = management_url.rstrip('/') return None except exceptions.AmbiguousEndpoints: - print("Found more than one valid endpoint. Use a more " - "restrictive filter") + print(_("Found more than one valid endpoint. Use a more " + "restrictive filter")) raise except KeyError: raise exceptions.AuthorizationFailure() except exceptions.EndpointNotFound: - print("Could not find any suitable endpoint. Correct region?") + print(_("Could not find any suitable endpoint. Correct " + "region?")) raise elif resp.status_code == 305: @@ -317,7 +318,7 @@ class HTTPClient(object): # GET ...:5001/v2.0/tokens/#####/endpoints url = '/'.join([url, 'tokens', '%s?belongsTo=%s' % (self.proxy_token, self.proxy_tenant_id)]) - self._logger.debug("Using Endpoint URL: %s" % url) + self._logger.debug(_("Using Endpoint URL: %s") % url) resp, body = self._time_request( url, "GET", headers={'X-Auth-Token': self.auth_token}) return self._extract_service_catalog(url, resp, body, @@ -463,8 +464,9 @@ def get_client_class(version): try: client_path = version_map[str(version)] except (KeyError, ValueError): - msg = "Invalid client version '%s'. must be one of: %s" % ( - (version, ', '.join(version_map.keys()))) + msg = _("Invalid client version '%(version)s'. must be one of: " + "%(keys)s") % {'version': version, + 'keys': ''.join(version_map.keys())} raise exceptions.UnsupportedVersion(msg) return utils.import_class(client_path) diff --git a/novaclient/openstack/common/strutils.py b/novaclient/openstack/common/strutils.py index 65b485448..c01de557a 100644 --- a/novaclient/openstack/common/strutils.py +++ b/novaclient/openstack/common/strutils.py @@ -102,7 +102,7 @@ def safe_decode(text, incoming=None, errors='strict'): :raises TypeError: If text is not an instance of str """ if not isinstance(text, six.string_types): - raise TypeError("%s can't be decoded" % type(text)) + raise TypeError(_("%s can't be decoded") % type(text)) if isinstance(text, six.text_type): return text @@ -145,7 +145,7 @@ def safe_encode(text, incoming=None, :raises TypeError: If text is not an instance of str """ if not isinstance(text, six.string_types): - raise TypeError("%s can't be encoded" % type(text)) + raise TypeError(_("%s can't be encoded") % type(text)) if not incoming: incoming = (sys.stdin.encoding or diff --git a/novaclient/shell.py b/novaclient/shell.py index 3f17091f6..a182c4f88 100644 --- a/novaclient/shell.py +++ b/novaclient/shell.py @@ -46,6 +46,7 @@ from novaclient import client from novaclient import exceptions as exc import novaclient.extension from novaclient.openstack.common import cliutils +from novaclient.openstack.common.gettextutils import _ from novaclient.openstack.common import strutils from novaclient import utils from novaclient.v1_1 import shell as shell_v1_1 @@ -70,10 +71,10 @@ def positive_non_zero_float(text): try: value = float(text) except ValueError: - msg = "%s must be a float" % text + msg = _("%s must be a float") % text raise argparse.ArgumentTypeError(msg) if value <= 0: - msg = "%s must be greater than 0" % text + msg = _("%s must be greater than 0") % text raise argparse.ArgumentTypeError(msg) return value @@ -137,7 +138,8 @@ class SecretsHelper(object): # Nothing changed.... return if not all([management_url, auth_token, tenant_id]): - raise ValueError("Unable to save empty management url/auth token") + raise ValueError(_("Unable to save empty management url/auth " + "token")) value = "|".join([str(auth_token), str(management_url), str(tenant_id)]) @@ -220,8 +222,8 @@ class NovaClientArgumentParser(argparse.ArgumentParser): #FIXME(lzyeval): if changes occur in argparse.ArgParser._check_value choose_from = ' (choose from' progparts = self.prog.partition(' ') - self.exit(2, "error: %(errmsg)s\nTry '%(mainp)s help %(subp)s'" - " for more information.\n" % + self.exit(2, _("error: %(errmsg)s\nTry '%(mainp)s help %(subp)s'" + " for more information.\n") % {'errmsg': message.split(choose_from)[0], 'mainp': progparts[0], 'subp': progparts[2]}) @@ -252,25 +254,25 @@ class OpenStackComputeShell(object): parser.add_argument('--debug', default=False, action='store_true', - help="Print debugging output") + help=_("Print debugging output")) parser.add_argument('--os-cache', default=strutils.bool_from_string( utils.env('OS_CACHE', default=False), True), action='store_true', - help="Use the auth token cache. Defaults to False if env[OS_CACHE]" - " is not set.") + help=_("Use the auth token cache. Defaults to False if " + "env[OS_CACHE] is not set.")) parser.add_argument('--timings', default=False, action='store_true', - help="Print call timing info") + help=_("Print call timing info")) parser.add_argument('--timeout', default=600, metavar='', type=positive_non_zero_float, - help="Set HTTP call timeout (in seconds)") + help=_("Set HTTP call timeout (in seconds)")) parser.add_argument('--os-auth-token', default=utils.env('OS_AUTH_TOKEN'), @@ -279,40 +281,40 @@ class OpenStackComputeShell(object): parser.add_argument('--os-username', metavar='', default=utils.env('OS_USERNAME', 'NOVA_USERNAME'), - help='Defaults to env[OS_USERNAME].') + help=_('Defaults to env[OS_USERNAME].')) parser.add_argument('--os_username', help=argparse.SUPPRESS) parser.add_argument('--os-password', metavar='', default=utils.env('OS_PASSWORD', 'NOVA_PASSWORD'), - help='Defaults to env[OS_PASSWORD].') + help=_('Defaults to env[OS_PASSWORD].')) parser.add_argument('--os_password', help=argparse.SUPPRESS) parser.add_argument('--os-tenant-name', metavar='', default=utils.env('OS_TENANT_NAME', 'NOVA_PROJECT_ID'), - help='Defaults to env[OS_TENANT_NAME].') + help=_('Defaults to env[OS_TENANT_NAME].')) parser.add_argument('--os_tenant_name', help=argparse.SUPPRESS) parser.add_argument('--os-tenant-id', metavar='', default=utils.env('OS_TENANT_ID'), - help='Defaults to env[OS_TENANT_ID].') + help=_('Defaults to env[OS_TENANT_ID].')) parser.add_argument('--os-auth-url', metavar='', default=utils.env('OS_AUTH_URL', 'NOVA_URL'), - help='Defaults to env[OS_AUTH_URL].') + help=_('Defaults to env[OS_AUTH_URL].')) parser.add_argument('--os_auth_url', help=argparse.SUPPRESS) parser.add_argument('--os-region-name', metavar='', default=utils.env('OS_REGION_NAME', 'NOVA_REGION_NAME'), - help='Defaults to env[OS_REGION_NAME].') + help=_('Defaults to env[OS_REGION_NAME].')) parser.add_argument('--os_region_name', help=argparse.SUPPRESS) @@ -325,21 +327,21 @@ class OpenStackComputeShell(object): parser.add_argument('--service-type', metavar='', - help='Defaults to compute for most actions') + help=_('Defaults to compute for most actions')) parser.add_argument('--service_type', help=argparse.SUPPRESS) parser.add_argument('--service-name', metavar='', default=utils.env('NOVA_SERVICE_NAME'), - help='Defaults to env[NOVA_SERVICE_NAME]') + help=_('Defaults to env[NOVA_SERVICE_NAME]')) parser.add_argument('--service_name', help=argparse.SUPPRESS) parser.add_argument('--volume-service-name', metavar='', default=utils.env('NOVA_VOLUME_SERVICE_NAME'), - help='Defaults to env[NOVA_VOLUME_SERVICE_NAME]') + help=_('Defaults to env[NOVA_VOLUME_SERVICE_NAME]')) parser.add_argument('--volume_service_name', help=argparse.SUPPRESS) @@ -347,7 +349,7 @@ class OpenStackComputeShell(object): metavar='', default=utils.env('NOVA_ENDPOINT_TYPE', default=DEFAULT_NOVA_ENDPOINT_TYPE), - help='Defaults to env[NOVA_ENDPOINT_TYPE] or ' + help=_('Defaults to env[NOVA_ENDPOINT_TYPE] or ') + DEFAULT_NOVA_ENDPOINT_TYPE + '.') # NOTE(dtroyer): We can't add --endpoint_type here due to argparse # thinking usage-list --end is ambiguous; but it @@ -360,8 +362,8 @@ class OpenStackComputeShell(object): metavar='', default=utils.env('OS_COMPUTE_API_VERSION', default=DEFAULT_OS_COMPUTE_API_VERSION), - help='Accepts 1.1 or 3, ' - 'defaults to env[OS_COMPUTE_API_VERSION].') + help=_('Accepts 1.1 or 3, ' + 'defaults to env[OS_COMPUTE_API_VERSION].')) parser.add_argument('--os_compute_api_version', help=argparse.SUPPRESS) @@ -375,10 +377,10 @@ class OpenStackComputeShell(object): parser.add_argument('--insecure', default=utils.env('NOVACLIENT_INSECURE', default=False), action='store_true', - help="Explicitly allow novaclient to perform \"insecure\" " + help=_("Explicitly allow novaclient to perform \"insecure\" " "SSL (https) requests. The server's certificate will " "not be verified against any certificate authorities. " - "This option should be used with caution.") + "This option should be used with caution.")) parser.add_argument('--bypass-url', metavar='', @@ -605,37 +607,37 @@ class OpenStackComputeShell(object): if not auth_plugin or not auth_plugin.opts: if not os_username: - raise exc.CommandError("You must provide a username " - "via either --os-username or env[OS_USERNAME]") + raise exc.CommandError(_("You must provide a username " + "via either --os-username or env[OS_USERNAME]")) if not os_tenant_name and not os_tenant_id: - raise exc.CommandError("You must provide a tenant name " + raise exc.CommandError(_("You must provide a tenant name " "or tenant id via --os-tenant-name, " "--os-tenant-id, env[OS_TENANT_NAME] " - "or env[OS_TENANT_ID]") + "or env[OS_TENANT_ID]")) if not os_auth_url: if os_auth_system and os_auth_system != 'keystone': os_auth_url = auth_plugin.get_auth_url() if not os_auth_url: - raise exc.CommandError("You must provide an auth url " + raise exc.CommandError(_("You must provide an auth url " "via either --os-auth-url or env[OS_AUTH_URL] " "or specify an auth_system which defines a " "default url with --os-auth-system " - "or env[OS_AUTH_SYSTEM]") + "or env[OS_AUTH_SYSTEM]")) if (options.os_compute_api_version and options.os_compute_api_version != '1.0'): if not os_tenant_name and not os_tenant_id: - raise exc.CommandError("You must provide a tenant name " + raise exc.CommandError(_("You must provide a tenant name " "or tenant id via --os-tenant-name, " "--os-tenant-id, env[OS_TENANT_NAME] " - "or env[OS_TENANT_ID]") + "or env[OS_TENANT_ID]")) if not os_auth_url: - raise exc.CommandError("You must provide an auth url " - "via either --os-auth-url or env[OS_AUTH_URL]") + raise exc.CommandError(_("You must provide an auth url " + "via either --os-auth-url or env[OS_AUTH_URL]")) self.cs = client.Client(options.os_compute_api_version, os_username, os_password, os_tenant_name, tenant_id=os_tenant_id, @@ -682,9 +684,9 @@ class OpenStackComputeShell(object): if not cliutils.isunauthenticated(args.func): self.cs.authenticate() except exc.Unauthorized: - raise exc.CommandError("Invalid OpenStack Nova credentials.") + raise exc.CommandError(_("Invalid OpenStack Nova credentials.")) except exc.AuthorizationFailure: - raise exc.CommandError("Unable to authorize user") + raise exc.CommandError(_("Unable to authorize user")) if os_compute_api_version == "3" and service_type != 'image': # NOTE(cyeoh): create an image based client because the @@ -753,7 +755,7 @@ class OpenStackComputeShell(object): if args.command in self.subcommands: self.subcommands[args.command].print_help() else: - raise exc.CommandError("'%s' is not a valid subcommand" % + raise exc.CommandError(_("'%s' is not a valid subcommand") % args.command) else: self.parser.print_help() diff --git a/novaclient/utils.py b/novaclient/utils.py index f4c8b8dd0..c10d5c3b2 100644 --- a/novaclient/utils.py +++ b/novaclient/utils.py @@ -60,8 +60,8 @@ def get_resource_manager_extra_kwargs(f, args, allow_conflicts=False): conflicting_keys = set(hook_kwargs.keys()) & set(extra_kwargs.keys()) if conflicting_keys and not allow_conflicts: - raise Exception("Hook '%(hook_name)s' is attempting to redefine" - " attributes '%(conflicting_keys)s'" % + raise Exception(_("Hook '%(hook_name)s' is attempting to redefine" + " attributes '%(conflicting_keys)s'") % {'hook_name': hook_name, 'conflicting_keys': conflicting_keys}) @@ -238,13 +238,15 @@ def find_resource(manager, name_or_id, **find_args): kwargs.update(find_args) return manager.find(**kwargs) except exceptions.NotFound: - msg = "No %s with a name or ID of '%s' exists." % \ - (manager.resource_class.__name__.lower(), name_or_id) + msg = _("No %(class)s with a name or ID of '%(name)s' exists.") % \ + {'class': manager.resource_class.__name__.lower(), + 'name': name_or_id} raise exceptions.CommandError(msg) except exceptions.NoUniqueMatch: - msg = ("Multiple %s matches found for '%s', use an ID to be more" - " specific." % (manager.resource_class.__name__.lower(), - name_or_id)) + msg = (_("Multiple %(class)s matches found for '%(name)s', use an ID " + "to be more specific.") % + {'class': manager.resource_class.__name__.lower(), + 'name': name_or_id}) raise exceptions.CommandError(msg) diff --git a/novaclient/v1_1/contrib/baremetal.py b/novaclient/v1_1/contrib/baremetal.py index db1f54977..825eedc9c 100644 --- a/novaclient/v1_1/contrib/baremetal.py +++ b/novaclient/v1_1/contrib/baremetal.py @@ -17,6 +17,7 @@ Baremetal interface (v2 extension). """ from novaclient import base +from novaclient.openstack.common.gettextutils import _ from novaclient import utils @@ -151,35 +152,36 @@ class BareMetalNodeManager(base.ManagerWithFind): @utils.arg('service_host', metavar='', - help='Name of nova compute host which will control this baremetal node') + help=_('Name of nova compute host which will control this baremetal ' + 'node')) @utils.arg('cpus', metavar='', type=int, - help='Number of CPUs in the node') + help=_('Number of CPUs in the node')) @utils.arg('memory_mb', metavar='', type=int, - help='Megabytes of RAM in the node') + help=_('Megabytes of RAM in the node')) @utils.arg('local_gb', metavar='', type=int, - help='Gigabytes of local storage in the node') + help=_('Gigabytes of local storage in the node')) @utils.arg('prov_mac_address', metavar='', - help='MAC address to provision the node') + help=_('MAC address to provision the node')) @utils.arg('--pm_address', default=None, metavar='', - help='Power management IP for the node') + help=_('Power management IP for the node')) @utils.arg('--pm_user', default=None, metavar='', - help='Username for the node\'s power management') + help=_('Username for the node\'s power management')) @utils.arg('--pm_password', default=None, metavar='', - help='Password for the node\'s power management') + help=_('Password for the node\'s power management')) @utils.arg('--terminal_port', default=None, metavar='', type=int, - help='ShellInABox port?') + help=_('ShellInABox port?')) def do_baremetal_node_create(cs, args): """Create a baremetal node.""" node = cs.baremetal.create(args.service_host, args.cpus, @@ -270,18 +272,18 @@ def do_baremetal_node_show(cs, args): @utils.arg('node', metavar='', - help="ID of node") + help=_("ID of node")) @utils.arg('address', metavar='
', - help="MAC address of interface") + help=_("MAC address of interface")) @utils.arg('--datapath_id', default=0, metavar='', - help="OpenFlow Datapath ID of interface") + help=_("OpenFlow Datapath ID of interface")) @utils.arg('--port_no', default=0, metavar='', - help="OpenFlow port number of interface") + help=_("OpenFlow port number of interface")) def do_baremetal_interface_add(cs, args): """Add a network interface to a baremetal node.""" bmif = cs.baremetal.add_interface(args.node, args.address, @@ -289,8 +291,8 @@ def do_baremetal_interface_add(cs, args): _print_baremetal_resource(bmif) -@utils.arg('node', metavar='', help="ID of node") -@utils.arg('address', metavar='
', help="MAC address of interface") +@utils.arg('node', metavar='', help=_("ID of node")) +@utils.arg('address', metavar='
', help=_("MAC address of interface")) def do_baremetal_interface_remove(cs, args): """Remove a network interface from a baremetal node.""" cs.baremetal.remove_interface(args.node, args.address) diff --git a/novaclient/v1_1/contrib/cells.py b/novaclient/v1_1/contrib/cells.py index a6cd78a4e..7c59400ef 100644 --- a/novaclient/v1_1/contrib/cells.py +++ b/novaclient/v1_1/contrib/cells.py @@ -14,6 +14,7 @@ # under the License. from novaclient import base +from novaclient.openstack.common.gettextutils import _ from novaclient import utils @@ -47,7 +48,7 @@ class CellsManager(base.Manager): @utils.arg('cell', metavar='', - help='Name of the cell.') + help=_('Name of the cell.')) def do_cell_show(cs, args): """Show details of a given cell.""" cell = cs.cells.get(args.cell) @@ -56,14 +57,15 @@ def do_cell_show(cs, args): @utils.arg('--cell', metavar='', - help="Name of the cell to get the capacities.", + help=_("Name of the cell to get the capacities."), default=None) def do_cell_capacities(cs, args): """Get cell capacities for all cells or a given cell.""" cell = cs.cells.capacities(args.cell) - print("Ram Available: %s MB" % cell.capacities['ram_free']['total_mb']) + print(_("Ram Available: %s MB") % cell.capacities['ram_free']['total_mb']) utils.print_dict(cell.capacities['ram_free']['units_by_mb'], dict_property='Ram(MB)', dict_value="Units") - print("\nDisk Available: %s MB" % cell.capacities['disk_free']['total_mb']) + print(_("\nDisk Available: %s MB") % + cell.capacities['disk_free']['total_mb']) utils.print_dict(cell.capacities['disk_free']['units_by_mb'], dict_property='Disk(MB)', dict_value="Units") diff --git a/novaclient/v1_1/contrib/host_evacuate.py b/novaclient/v1_1/contrib/host_evacuate.py index c8acef8b5..dd1aef267 100644 --- a/novaclient/v1_1/contrib/host_evacuate.py +++ b/novaclient/v1_1/contrib/host_evacuate.py @@ -14,6 +14,7 @@ # under the License. from novaclient import base +from novaclient.openstack.common.gettextutils import _ from novaclient import utils @@ -29,7 +30,7 @@ def _server_evacuate(cs, server, args): args.on_shared_storage) except Exception as e: success = False - error_message = "Error while evacuating instance: %s" % e + error_message = _("Error while evacuating instance: %s") % e return EvacuateHostResponse(base.Manager, {"server_uuid": server['uuid'], "evacuate_accepted": success, @@ -40,12 +41,13 @@ def _server_evacuate(cs, server, args): @utils.arg('--target_host', metavar='', default=None, - help='Name of target host.') + help=_('Name of target host.')) @utils.arg('--on-shared-storage', dest='on_shared_storage', action="store_true", default=False, - help='Specifies whether all instances files are on shared storage') + help=_('Specifies whether all instances files are on shared ' + ' storage')) def do_host_evacuate(cs, args): """Evacuate all instances from failed host to specified one.""" hypervisors = cs.hypervisors.search(args.host, servers=True) diff --git a/novaclient/v1_1/contrib/host_servers_migrate.py b/novaclient/v1_1/contrib/host_servers_migrate.py index 3076dc51d..ac5238f42 100644 --- a/novaclient/v1_1/contrib/host_servers_migrate.py +++ b/novaclient/v1_1/contrib/host_servers_migrate.py @@ -14,6 +14,7 @@ # under the License. from novaclient import base +from novaclient.openstack.common.gettextutils import _ from novaclient import utils @@ -28,7 +29,7 @@ def _server_migrate(cs, server): cs.servers.migrate(server['uuid']) except Exception as e: success = False - error_message = "Error while migrating instance: %s" % e + error_message = _("Error while migrating instance: %s") % e return HostServersMigrateResponse(base.Manager, {"server_uuid": server['uuid'], "migration_accepted": success, diff --git a/novaclient/v1_1/contrib/instance_action.py b/novaclient/v1_1/contrib/instance_action.py index 6e64d0b50..cddc30012 100644 --- a/novaclient/v1_1/contrib/instance_action.py +++ b/novaclient/v1_1/contrib/instance_action.py @@ -16,6 +16,7 @@ import pprint from novaclient import base +from novaclient.openstack.common.gettextutils import _ from novaclient import utils @@ -41,10 +42,10 @@ class InstanceActionManager(base.ManagerWithFind): @utils.arg('server', metavar='', - help='Name or UUID of the server to show an action for.') + help=_('Name or UUID of the server to show an action for.')) @utils.arg('request_id', metavar='', - help='Request ID of the action to get.') + help=_('Request ID of the action to get.')) def do_instance_action(cs, args): """Show an action.""" server = utils.find_resource(cs.servers, args.server) @@ -57,7 +58,7 @@ def do_instance_action(cs, args): @utils.arg('server', metavar='', - help='Name or UUID of the server to list actions for.') + help=_('Name or UUID of the server to list actions for.')) def do_instance_action_list(cs, args): """List actions on a server.""" server = utils.find_resource(cs.servers, args.server) diff --git a/novaclient/v1_1/contrib/metadata_extensions.py b/novaclient/v1_1/contrib/metadata_extensions.py index 16e4ad13d..27b864f7a 100644 --- a/novaclient/v1_1/contrib/metadata_extensions.py +++ b/novaclient/v1_1/contrib/metadata_extensions.py @@ -13,23 +13,25 @@ # License for the specific language governing permissions and limitations # under the License. +from novaclient.openstack.common.gettextutils import _ from novaclient import utils from novaclient.v1_1 import shell @utils.arg('host', metavar='', - help='Name of host.') + help=_('Name of host.')) @utils.arg('action', metavar='', choices=['set', 'delete'], - help="Actions: 'set' or 'delete'") + help=_("Actions: 'set' or 'delete'")) @utils.arg('metadata', metavar='', nargs='+', action='append', default=[], - help='Metadata to set or delete (only key is necessary on delete)') + help=_('Metadata to set or delete (only key is necessary on ' + 'delete)')) def do_host_meta(cs, args): """Set or Delete metadata on all instances of a host.""" hypervisors = cs.hypervisors.search(args.host, servers=True) diff --git a/novaclient/v1_1/contrib/migrations.py b/novaclient/v1_1/contrib/migrations.py index 87fdd1930..507ebc9eb 100644 --- a/novaclient/v1_1/contrib/migrations.py +++ b/novaclient/v1_1/contrib/migrations.py @@ -15,6 +15,7 @@ migration interface """ from novaclient import base +from novaclient.openstack.common.gettextutils import _ from novaclient.openstack.common.py3kcompat import urlutils from novaclient import utils @@ -54,15 +55,15 @@ class MigrationManager(base.ManagerWithFind): @utils.arg('--host', dest='host', metavar='', - help='Fetch migrations for the given host.') + help=_('Fetch migrations for the given host.')) @utils.arg('--status', dest='status', metavar='', - help='Fetch migrations for the given status.') + help=_('Fetch migrations for the given status.')) @utils.arg('--cell_name', dest='cell_name', metavar='', - help='Fetch migrations for the given cell_name.') + help=_('Fetch migrations for the given cell_name.')) def do_migration_list(cs, args): """Print a list of migrations.""" _print_migrations(cs.migrations.list(args.host, args.status, diff --git a/novaclient/v1_1/contrib/tenant_networks.py b/novaclient/v1_1/contrib/tenant_networks.py index 9ac97f110..8c9b22ebc 100644 --- a/novaclient/v1_1/contrib/tenant_networks.py +++ b/novaclient/v1_1/contrib/tenant_networks.py @@ -13,6 +13,7 @@ # limitations under the License. from novaclient import base +from novaclient.openstack.common.gettextutils import _ from novaclient import utils @@ -57,10 +58,10 @@ def do_net_list(cs, args): @utils.arg('label', metavar='', - help='Network label (ex. my_new_network)') + help=_('Network label (ex. my_new_network)')) @utils.arg('cidr', metavar='', - help='IP block to allocate from (ex. 172.16.0.0/24 or ' - '2001:DB8::/64)') + help=_('IP block to allocate from (ex. 172.16.0.0/24 or ' + '2001:DB8::/64)')) def do_net_create(cs, args): """ Create a network diff --git a/novaclient/v1_1/flavor_access.py b/novaclient/v1_1/flavor_access.py index b314040fe..d847d061f 100644 --- a/novaclient/v1_1/flavor_access.py +++ b/novaclient/v1_1/flavor_access.py @@ -16,6 +16,7 @@ """Flavor access interface.""" from novaclient import base +from novaclient.openstack.common.gettextutils import _ class FlavorAccess(base.Resource): @@ -35,7 +36,7 @@ class FlavorAccessManager(base.ManagerWithFind): elif kwargs.get('tenant', None): return self._list_by_tenant(kwargs['tenant']) else: - raise NotImplementedError('Unknown list options.') + raise NotImplementedError(_('Unknown list options.')) def _list_by_flavor(self, flavor): return self._list('/flavors/%s/os-flavor-access' % base.getid(flavor), @@ -45,7 +46,7 @@ class FlavorAccessManager(base.ManagerWithFind): """Print flavor list shared with the given tenant.""" # TODO(uni): need to figure out a proper URI for list_by_tenant # since current API already provided current tenant_id information - raise NotImplementedError('Sorry, query by tenant not supported.') + raise NotImplementedError(_('Sorry, query by tenant not supported.')) def add_tenant_access(self, flavor, tenant): """Add a tenant to the given flavor access list.""" diff --git a/novaclient/v1_1/flavors.py b/novaclient/v1_1/flavors.py index 91c879bf5..8aa875ff0 100644 --- a/novaclient/v1_1/flavors.py +++ b/novaclient/v1_1/flavors.py @@ -18,6 +18,7 @@ Flavor interface. from novaclient import base from novaclient import exceptions +from novaclient.openstack.common.gettextutils import _ from novaclient.openstack.common.py3kcompat import urlutils from novaclient.openstack.common import strutils from novaclient import utils @@ -172,15 +173,15 @@ class FlavorManager(base.ManagerWithFind): try: ram = int(ram) except (TypeError, ValueError): - raise exceptions.CommandError("Ram must be an integer.") + raise exceptions.CommandError(_("Ram must be an integer.")) try: vcpus = int(vcpus) except (TypeError, ValueError): - raise exceptions.CommandError("VCPUs must be an integer.") + raise exceptions.CommandError(_("VCPUs must be an integer.")) try: disk = int(disk) except (TypeError, ValueError): - raise exceptions.CommandError("Disk must be an integer.") + raise exceptions.CommandError(_("Disk must be an integer.")) if flavorid == "auto": flavorid = None @@ -188,20 +189,20 @@ class FlavorManager(base.ManagerWithFind): try: swap = int(swap) except (TypeError, ValueError): - raise exceptions.CommandError("Swap must be an integer.") + raise exceptions.CommandError(_("Swap must be an integer.")) try: ephemeral = int(ephemeral) except (TypeError, ValueError): - raise exceptions.CommandError("Ephemeral must be an integer.") + raise exceptions.CommandError(_("Ephemeral must be an integer.")) try: rxtx_factor = float(rxtx_factor) except (TypeError, ValueError): - raise exceptions.CommandError("rxtx_factor must be a float.") + raise exceptions.CommandError(_("rxtx_factor must be a float.")) try: is_public = strutils.bool_from_string(is_public, True) except Exception: - raise exceptions.CommandError("is_public must be a boolean.") + raise exceptions.CommandError(_("is_public must be a boolean.")) body = self._build_body(name, ram, vcpus, disk, flavorid, swap, ephemeral, rxtx_factor, is_public) diff --git a/novaclient/v1_1/networks.py b/novaclient/v1_1/networks.py index 18c5bd53e..d29faf26d 100644 --- a/novaclient/v1_1/networks.py +++ b/novaclient/v1_1/networks.py @@ -19,6 +19,7 @@ Network interface. from novaclient import base from novaclient import exceptions +from novaclient.openstack.common.gettextutils import _ class Network(base.Resource): @@ -110,7 +111,7 @@ class NetworkManager(base.ManagerWithFind): body = {"disassociate_host": None} else: raise exceptions.CommandError( - "Must disassociate either host or project or both") + _("Must disassociate either host or project or both")) self.api.client.post("/os-networks/%s/action" % base.getid(network), body=body) diff --git a/novaclient/v1_1/security_group_rules.py b/novaclient/v1_1/security_group_rules.py index 1ebf809ed..f1348920a 100644 --- a/novaclient/v1_1/security_group_rules.py +++ b/novaclient/v1_1/security_group_rules.py @@ -19,6 +19,7 @@ Security group rules interface (1.1 extension). from novaclient import base from novaclient import exceptions +from novaclient.openstack.common.gettextutils import _ class SecurityGroupRule(base.Resource): @@ -48,14 +49,14 @@ class SecurityGroupRuleManager(base.Manager): try: from_port = int(from_port) except (TypeError, ValueError): - raise exceptions.CommandError("From port must be an integer.") + raise exceptions.CommandError(_("From port must be an integer.")) try: to_port = int(to_port) except (TypeError, ValueError): - raise exceptions.CommandError("To port must be an integer.") + raise exceptions.CommandError(_("To port must be an integer.")) if ip_protocol.upper() not in ['TCP', 'UDP', 'ICMP']: - raise exceptions.CommandError("Ip protocol must be 'tcp', 'udp', " - "or 'icmp'.") + raise exceptions.CommandError(_("Ip protocol must be 'tcp', 'udp'" + ", or 'icmp'.")) body = {"security_group_rule": { "ip_protocol": ip_protocol,